JavaクラスからC++メソッドにアクセスするためにJNIを使用しようとしています。私は細かい私のJavaクラス(エクリプスまたはコマンドラインで両方)コンパイルできるんだけど、実行時にクラスを実行するには、私が取得しています:以下のように実行時にjava.lang.UnsatisfiedLinkErrorを取得する
Exception in thread "main" java.lang.UnsatisfiedLinkError: com.domain.services.CallServiceAPIS.createSession()I at com.domain.services.CallServiceAPIS.createSession(Native Method) at com.domain.services.CallServiceAPIS.main(CallServiceAPIS.java:18)
Javaコードは次のとおりです。
package com.domain.services;
public class CallServiceAPIS {
static {
System.loadLibrary("service.client");
}
public native int createSession();
public static void main(String[] args) {
System.out.println(System.getProperty("java.library.path"));
new CallServiceAPIS().createSession();
}
}
java.library.pathの出力を含めて、C++ライブラリの正しい場所を指していることを確認しました。私はまた、私のEclipse環境でLD_LIBRARY_PATHを設定しようとしました。しかし、どちらもうまくいった。
System.loadLibrary呼び出しは、1)コードがコンパイルされ、2)エラーが新しいCallServiceAPIs呼び出しである18行目で発生していることに注意してください。
C++コード:
int createSession(const PosServiceInfo info, const SessionArgs& args, Domain::UUID& uuidSession)
{
return int::undefined;
}
任意のアイデア?
createSessionが定義されているC++ソースコードを表示します。 – gudok
@gudokはC++ソース – user3712321
を返しました 'return int :: undefined;'これはC++ではありません。 – PaulMcKenzie