簡體   English   中英

g ++,ld和JNI-鏈接問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM