繁体   English   中英

在Eclipse for Java中使用静态C ++库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM