UnsatisfiedLinkError - c ++ dll和java

时间:2013-02-12 11:04:56

标签: eclipse

我需要从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

0 个答案:

没有答案