У меня есть небольшой пример, когда библиотека c ++, созданная с -std = c ++ 11, дает неразрешенный символ при загрузке из Java-программы.
Версия cc и CC - это /opt/developerstudio12.6
Версия Java - 1.8.0_151
.
Любая помощь будет принята с благодарностью.
hello.c
int example(void)
{
return 99;
}
test.java
class test {
public static void main(String[] args) {
}
static {
System.loadLibrary("hello");
}
}
% / opt / developerstudio12.6 / bin / cc -m64 -xarch = sparc -O -xcheck =% none -xcode = pic32 -c hello.c
% / opt / developerstudio12.6 / bin / CC -std = c ++ 11 -m64 -xarch = sparc -G hello.o -o libhello.so
% javac test.java
% javah -jni test
% setenv LD_LIBRARY_PATH.
% тест на Java
Исключение в потоке "main" java.lang.UnsatisfiedLinkError:
libhello.so: ld.so.1: java: fatal: ошибка перемещения: файл
/usr/lib/64/libCrunG3.so.1: символ _ZTVSt13bad_exception: ссылка
символ не найден
at java.lang.ClassLoader $ NativeLibrary.load (собственный метод)
в java.lang.ClassLoader.loadLibrary0 (ClassLoader.java:1941)
в java.lang.ClassLoader.loadLibrary (ClassLoader.java:1857)
at java.lang.Runtime.loadLibrary0 (Runtime.java:870)
в java.lang.System.loadLibrary (System.java:1122)
в тесте. (test.java:9)