假设我有一个静态 C++ 库 DataPacker.lib 并链接到一个名为 Command.dll 的共享动态链接库。
静态库公开以下功能,
//Datapacker.h
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT void JNICALL Java__Observer_sendToClient
(JNIEnv *, jclass, jobject);
#ifdef __cplusplus
}
#endif
//Datapacker.cpp
JNIEXPORT void JNICALL Java__Observer_sendToClient
(JNIEnv *, jclass, jobject)
{
//Print
}
现在我尝试从java类调用上面的函数,如下所示,
//Observer.Java
class Observer
{
static{
System.loadLibrary("Command");
}
public static void main(String[] args) {
try{
sendToClient();
}
catch (Throwable t){
System.err.println("Native code library failed to load.\n" + t.getMessage());
}
}
private static native void sendToClient();
}
但是我从java中得到以下异常,
“本机代码库加载失败。Observer.sendToClient()V”
当它从 DataPacker.lib 移动到 command.lib 时,调用工作正常。请帮忙。