У меня есть два файла библиотеки сторонних производителей, которые называются libA.a и libB.a
Они построены с G ++.
Теперь мне нужно выполнять вызовы функций из Java с использованием JNI.
У меня есть файл-оболочка JNI, называемый wrapper.cpp, и я попытался создать файл library.so, который можно загрузить в мою программу java и выполнить вызовы функций.
Сначала я скомпилировал wrapper.cpp, используя g ++, и попытался связать все объектные файлы, используя 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
Поиск этих ошибок не помогает: (
Может кто-нибудь сказать мне, где я иду не так?
Примечание: я использую g ++ 3.4.3 в SunOS 5.10