我正在嘗試使用JNI從Java類訪問C++方法。我能夠編譯(無論是在Eclipse或者命令行)我的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調用IS正在工作,因爲1)代碼編譯和2)錯誤發生在第18行,這是新的CallServiceAPIs調用。
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