![](/img/trans.png)
[英]Using JNI to execute a java jar from a C++ program, using g++ or eclipse
[英]g++, ld and JNI - linking problem
我有兩個名為libA.a和libB.a的3rd party庫文件
它們是用g ++構建的。
現在,我需要使用JNI從Java進行函數調用。
我有一個名為wrapper.cpp的JNI包裝文件,並試圖創建一個library.so文件,該文件可以加載到我的Java程序中並執行函數調用。
我首先使用g ++編譯wrapper.cpp,然后嘗試使用ld鏈接所有目標文件。
這些是我使用的命令。
%g++ wrapper.cpp -I /usr/java/include/ -I /usr/java/include/solaris/ libA.a libB.a -L /lib/*.so -c
這創建了wrapper.o
%ld -L /usr/java/lib/ -L /lib/ -b wrapper.o libA.a libB.a -o wrapper.so -m
這給了我以下錯誤:
Undefined first referenced
symbol in file
_ZNKSsixEj wrapper.o
_ZNSt8ios_base4InitD1Ev wrapper.o
_ZNSt8ios_base4InitC1Ev wrapper.o
__gxx_personality_v0 wrapper.o
_ZNKSs4sizeEv wrapper.o
ld: fatal: Symbol referencing errors. No output written to wrapper.so
谷歌搜索這些錯誤無濟於事:(
有人可以告訴我我要去哪里錯嗎?
注意:我在SunOS 5.10上使用g ++ 3.4.3
嘗試將-lstdc ++添加到鏈接器命令中。 您可能還需要--enable-auto-import。
使用clang ++。 -lstdc ++沒有定義_ZNSt8ios_base4InitC1Ev符號。 嘗試將庫-lgnustl_shared添加到鏈接器命令中。 那對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.