我做了一个从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中触发。
由于
答案 0 :(得分:0)
我很笨,我的所有JNI导出方法都有一个命名空间。 因此,他们没有被执行。现在它有效。