0

静的 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 に移動すると、呼び出しは正常に機能します。助けてください。

4

1 に答える 1