无法使用JNI调用dll方法

时间:2017-11-01 06:04:24

标签: java dll java-native-interface

我尝试为CDRip库编写一个包装器。但我在JNI中是一个非常新的人。我有一个问题需要一个本机方法来工作:

public class CDRipJNI {
  static {
    System.loadLibrary("CDRip");
  }

  // Get the DLL version number
  static native int CR_GetCDRipVersion();
}

在另一个课程中,我称这种方法为:

int version = CDRipJNI.CR_GetCDRipVersion();

dll已成功加载但方法调用失败:

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.test.CDRipJNI.CR_GetCDRipVersion()J
    at com.test.CDRipJNI.CR_GetCDRipVersion(Native Method)
    at Test.main(Test.java:5)

1 个答案:

答案 0 :(得分:0)

如果它没有一个带有该签名的方法,它没有,那么你的Java类是错误的,或者它根本就不是JNI DLL。

如果 是一个JNI DLL,我根本不知道你为什么要为它编写任何类型的包装器:它们应该提供它。

所以它不是。如果它不是一个JNI DLL,你将不得不编写自己的JNI DLL来调用它,并且按照通常的JNI来匹配你的Java类等。