我需要从java调用c ++ dll。 c ++ dll是在eclipse galileo中开发的。 java部分是在eclipse juno中开发的。我正在使用jni将dll链接到java应用程序。但是我得到了UnsatisfiedLinkError。我有搜索并尝试了我能找到的每一个修复,但我得到了同样的错误。所以,我的结论是:我做的事情基本上是错误的。
我已将我的dll添加到本机库路径 - 同样的错误。 我添加了PATH - 同样的错误。 我已经添加了eclipse.ini的路径 - 同样的错误。 我已将dll添加到java项目中的文件夹中 - 同样的错误。
dll代码和java代码都可以编译而不会出现错误或警告。但是当我运行应用程序时,我在调用函数时会得到一个exeption。
System.getProperty(“java.librayr.path”)返回我放置dll的文件夹的路径。实际上,它返回两条路径,但它们是相同的。
我尝试过System.LoadLibrary()和System.Load。我只使用名称,名称.dll和路径。对于两个电话 - 同样的错误。
在h文件中
JNIEXPORT jint JNICALL Java_Test_calc (JNIEnv *, jobject, jint);
在cpp文件中
JNIEXPORT jint JNICALL Java_Test_calc (JNIEnv *env, jobject thisObj, int a)
{
return (a+a);
}
在java中 `公共课测试 {
/**
* @param args
*/
public native String print(String msg); //native method
public native String printC(String msg); //native method
public native int calc(int a); //native method
static
{
System.loadLibrary("libSocketTest");
}
public static void main(String[] args) {
System.out.println(System.getProperty("java.library.path"));
Test test = new Test();
int t = test.calc(2);
test.print("Lotta testar :)" + t);
}
}`
我跟着这个: Java Native Interface