[英]invoke c++ main method from java using jna
我試圖在mac / unix環境中使用JNA從Java調用c ++方法。
我有兩個問題。
到目前為止,我可以成功實現簡單的示例,但是我不確定如何為以下C ++方法編寫Java計數器部分:
int main(int argc, char* argv[]){...}
我試過的Java代碼
public interface CTest extends Library {
int main(int argc, Pointer argv);
}
給
java.lang.UnsatisfiedLinkError:查找函數“ main”時出錯:dlsym(0x7fdee8c39300,main):找不到符號
還嘗試了以下
public interface CTest extends Library {
int main(int argc, Object... argv[]);
//doesnt work either - int main(int argc, String argv);
}
無濟於事。 相同問題-找不到符號。 有小費嗎? 最終,我需要執行以下操作:
CTest ctest = (CTest) Native.loadLibrary("ctest", CTest.class);
String obj[] = new String[]{"-v, filepath/file"};
ctest.main(2, obj);
System.setProperty("jna.library.path",path-to-dylib)
無法工作。 我該如何實現? 好的,我自己弄清楚了,希望能有一個快速的答案,但無論如何。 解決方法如下:
答1:下面是我的界面方法。
public interface CTest extends Library {
public int main(int arc, String[] argv);
}
答案2:這就是我計划處理多線程的方式
String argv[] = {"-v","path-to-file/file.extension"};
System.load(this.getClass().getResource("libmylib.dylib").getFile());
//load a different library later if required.. this way multiple threads load respective libs when/what they want
HelloJNA.CTest ctest = (HelloJNA.CTest) Native.loadLibrary("mylib", HelloJNA.CTest.class);
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.