我有点'新手JNI
,但一直在阅读很多关于JNI
何时我想在我的项目中使用旧版 dll 的信息。足够快,我发现我不能为本地方法提供参数。这是我尝试编码但没有成功的示例:
Hello.java:
package HelloWorld;
Public class Hello {
Private static native int HelloWorld();
Private static native int Mirror(int a);
Static {
System.loadLibrary("Example"); //got path in
vm arguments - works.
}
Public static void main(String[] args) {
Int a = 8;
System.out.println(Mirror(a));
}
使用 javah 创建标头,这让我得到了这个签名:
JNIEXPORT jint JNICALL Java_HelloWorld_Hello_Mirror (JNIEnv *, jclass, jint);
写了一个 cpp:与带有 impl 的 h 相同的签名:"return 1";
就是这样......这是我从 eclipse 得到的错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloWorld/Hello.Mirror(I)I
at HelloWorld.Hello.main (Hello.java:14)
这些是我的想法: A. 看到了一些关于 c 和 cpp 的东西,我是不是在混合东西。B. jdk 还是什么东西?C.库加载完美(检查了其他没有获取参数的函数),可能类型不兼容?
卡了一段时间,希望大家能帮帮我!