【发布时间】:2020-07-29 12:36:12
【问题描述】:
我不知道为什么在 JNIEXPORT 和 JNICALL 上给我错误...
信息: Visual Studio 2017,Windows
JAVA_HOME 已设置。
在 'C/C++ > General > Additional Include Directories' 中添加目录
包含目录> C:\Program Files\Java\jdk1.8.0_251\include
我尝试添加 jvm.lib 但没有成功。
错误: JNIERROR - '变量 JNIEXPORT 不是类型名称' JNICALL - '预期的;'
代码:
#include <iostream>
#include <jvmti.h>
#include <jni.h>
JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved) {
}
【问题讨论】:
-
包含你有 JNIEXPORT (可能是 JNICALL)是未知的(很可能作为预处理器变量)所以编译器考虑它作为类型。
JAVA_HOME is set.与您的 C++ 编译器无关 -
可能就像在stackoverflow.com/questions/11561216/… 中一样,只需将它们定义为一个空的预处理器定义......假设你不能只删除它们以拥有
jint Agent_OnLoad(JavaVM *vm, char *options, void *reserved) {} -
请检查您是否包含了正确的 jni.h 文件(来自您的 JDK)以及它是否包含这些定义。
-
"jni.h" 可能无法正确包含,如果包含目录只有“...\jdk\include”。 "jni.h" 拉取 "jni_md.h",它位于 Windows 上的 "...\jdk\include\win32" 中。
-
我会检查每个人的建议并稍后提供反馈!
标签: c++ c java-native-interface jvmti