0

我有点'新手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.库加载完美(检查了其他没有获取参数的函数),可能类型不兼容?

卡了一段时间,希望大家能帮帮我!

4

1 回答 1

0

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

于 2013-03-13T09:53:40.383 回答