如何在Java中加载cpp库时避免异常?
我正在研究Java。我尝试使用以下代码调用在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库包含
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
它应该告诉您它希望加载什么以及缺少什么。如果每个库都存在,则可以使用虚拟符号预加载库。