【发布时间】:2016-10-26 15:38:09
【问题描述】:
我希望使用 JNI 制作基于 C++ 库的 java 实现。不幸的是,当我希望在 java 中使用共享库时,找不到它。这个共享库的问题在于它链接了另一个共享库。我有两种不同的情况,一种有效(但不应使用),另一种无效。
Ana 库必须始终是静态的。 Clara 库必须始终共享。当 Bob 库是静态的时它可以工作,但它应该是共享的,并且应该包括 Ana 和 Clara。
案例 1(工作并且可以加载到正确的 java.library.path 中)。
sharedlibJava.so 链接:staticlibAna.a staticlibBob.a sharedlibClara.so
案例 2(不起作用,因为即使 java.library.path 正确也无法加载它)。 sharedlibBob.so 链接:staticlibAna.a 和 sharedlibClara.so(基本的 c++ 实现已经过测试,可以正常工作)
sharedlibJava.so 链接:sharedlibBob.so(java 实现应该可以使用这个新的共享库)。
问题是,当我尝试加载库时,即使它位于正确的 java.library.path 中,它也找不到它。
非常感谢有关此问题的任何反馈。
【问题讨论】:
标签: java linux windows java-native-interface shared-libraries