Java加载从JNI中的另一个DLL导出方法的DLL

时间:2018-02-12 15:21:29

标签: java c++ dll java-native-interface

我做了一个从JNI中的另一个DLL导出方法的DLL。

    JNIEXPORT bool JNICALL getIsWordInPhonemListFR(const char* word)
{
    isWordInPhonemListFR method = NULL;
    BOOL fRunTimeLinkSuccess = FALSE;

    HINSTANCE hGetProcIDDLL = LoadLibrary(L"PhoneticEngineFR2.dll");
    if (!hGetProcIDDLL) {

        std::cout << "kcould not load the dynamic library" << std::endl;

    }else{
        method = (isWordInPhonemListFR)GetProcAddress(hGetProcIDDLL, "isWordInPhonemListFR");
    }

    return method(word);
}

java中的System.load没有给出任何错误但是当我想使用我的原生方法时,我得到了一个

  

java.lang.UnsatisfiedLinkError中:

这两个DLL都在我的项目中的同一个文件夹中。在视觉工作室工作时工作正常,但JNI的出口有问题。 JNI onLoad也不会在java中触发。

由于

1 个答案:

答案 0 :(得分:0)

我很笨,我的所有JNI导出方法都有一个命名空间。 因此,他们没有被执行。现在它有效。