[英]Use static C++ library in Eclipse for Java
我想在我的Java程序中使用现有的静态C ++库。 我读到它应该是可能的 。 这些步骤(几乎)与链接动态库的步骤相同。 不幸的是,如果我尝试加载库:
static {
System.loadLibrary("mylibrary");
}
我得到一个例外:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no mylibrary in java.library.path
我尝试在手动调用System.loadLibrary
之前设置java.library.path,但它没有帮助:
System.setProperty("java.library.path", "/workspace/LibraryTest/lib/");
在项目的运行配置中设置LD_LIBRARY_PATH
也无法解决问题。 我犯了同样的错误。 对于共享库,它工作正常。 目前我在Debian Jessie的Eclipse Mars中使用Oracle Java8。 图书馆是否需要采用JNI_OnLoad_mylibrary
方法? 有人遇到类似问题吗?
编辑
尝试/ usr / lib目录并添加了JNI_OnLoad_mylibrary
。 没有成功。
也许你的代码不可重定位? 这似乎可能会破坏JVM。 用-fPIC
编译,看看会发生什么。
从答案到另一个问题,您需要在二进制文件中定义JNI_OnLoad_name-of-your-library
才能使其正常工作。 C ++名称毁了你的一天吗? 您可能需要extern "C"
,它可以让JVM找到它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.