Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中加载cpp库时避免异常?_Java_C++_Java Native Interface - Fatal编程技术网

如何在Java中加载cpp库时避免异常?

如何在Java中加载cpp库时避免异常?,java,c++,java-native-interface,Java,C++,Java Native Interface,我正在研究Java。我尝试使用以下代码调用在Java类中加载cpp共享库: System.loadLibrary("libraryName"); 但是正在加载的cpp库本身包含一些未定义的符号。 因此,当我试图编译Java类时,它抛出一个异常,如下所示: Exception in thread "main" java.lang.UnsatisfiedLinkError:libraryName.so: libraryName.so: undefined symbol: ... 即使cpp库包含

我正在研究Java。我尝试使用以下代码调用在Java类中加载cpp共享库:

System.loadLibrary("libraryName");
但是正在加载的cpp库本身包含一些未定义的符号。 因此,当我试图编译Java类时,它抛出一个异常,如下所示:

Exception in thread "main" java.lang.UnsatisfiedLinkError:libraryName.so:
libraryName.so: undefined symbol: ...

即使cpp库包含未定义的符号,我们是否可以选择成功加载该库?

可以,但在这种情况下,加载库时需要此符号/方法/字段。在某些情况下,只有在程序运行时才会发现缺少的符号。;)


加载此库的唯一方法是提供一个包含所需符号的库。

如果它包含问题,为什么要加载它?因为它是
。所以
库我假设它是Unix。@PeterLawrey是的,它是linuxya我知道所有未定义的符号。如何使用它们成功加载库?创建一个虚拟库,定义这些符号,并为其指定预期的库名称。如果您使用ldd libraryName.so
它应该告诉您它希望加载什么以及缺少什么。如果每个库都存在,则可以使用虚拟符号预加载库。