JNIEXPORT jint JNICALL JNI_Func(....) {
....
}
当我尝试在 native 代码中使用宏(JNIEXPORT 和 JNICALL)运行 java 程序时,出现不满意的链接错误。但是当我删除宏时,我没有得到任何异常(exception)。 IDE Code::Blocks 是否不支持 JNI 宏?如果它支持我应该做什么来启用它们?
注意:我没有收到与定义的宏相关的错误或警告。它只是运行失败,因为它给了我不满意的链接错误。
编辑:
堆栈跟踪:
Exception in thread "main" java.lang.UnsatisfiedLinkError: keylogger.TestKeys.initializeJNIVars()V
at keylogger.TestKeys.initializeJNIVars(Native Method)
at keylogger.TestKeys.main(TestKeys.java:22)
但在抛出此异常之前,它会打印 native 代码中的一行。问题确实出在宏上。
最佳答案
如果源代码编译并创建了 DLL,则 Code::Blocks 没有任何问题。 Code::Blocks使用gcc,gcc可以毫无问题地创建JNI DLL
如果在运行 Java 类时遇到此错误,请确保已将 DLL 放入 java.library.path
编辑
您需要在Project->Build options->Linker Settings->Other Linker Options
上添加这两个选项才能使其正常工作:
-Xlinker --add-stdcall-alias
关于java - code::blocks 不支持 JNI 宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10945865/