JNI:传递参数时不满意链接错误

时间:2013-03-11 15:39:14

标签: java-native-interface

我是JNI的新手,但在我想在项目中使用遗留dll时,我已经阅读了很多关于JNI的信息。 很快,我发现我不能参数到本机方法。这是一个我尝试编码但没有成功的例子:

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: 与h具有相同的签名:"return 1";

就是这样......这是我从日食中得到的错误: 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.库完全加载(检查了其他没有获取参数的函数),可能类型不兼容?

坚持这一段时间,希望你们能帮助我!

1 个答案:

答案 0 :(得分:0)

解决! 只需要在“extern c”命令之后在cpp文件中的两个函数周围添加“{”...