首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在一个头下使用多个动态库的JNAerator?

如何在一个头下使用多个动态库的JNAerator?
EN

Stack Overflow用户
提问于 2015-04-09 05:12:34
回答 1查看 2.4K关注 0票数 4

我正在使用JNAerator生成一个单独的jar文件,我可以包含在一个项目中,并且我希望支持每个操作系统的动态库,并支持这个jar中的所有jar。

到目前为止,在处理JNAerator时,我已经能够使用如下命令包括一个动态库:

代码语言:javascript
运行
复制
java -jar jnaerator.jar test.dll test.h [...] -mode StandaloneJar

但是,这只是包test.dll,而我有用于多个系统(test_win32.dlltest_win64.dlllibtest_mac.dyliblibtest_linux_x86.solibtest_linux_amd64.so)的动态库,我希望它们都打包到一个jar中并得到它们的支持。

是否有任何方法可以通过一次运行JNAerator来实现“全在一体”的方法,或者必须为每个平台生成不同的jar文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-09 21:56:59

JNAerator有一个专门为此设计的-arch选项,尽管the doc is currently terribly vague about it

代码语言:javascript
运行
复制
java -jar jnaerator-0.12-shaded.jar \
  -arch win32 win32/test.dll \
  -arch win64 win64/test.dll \
  -arch darwin_universal mac/libtest.dylib \
  -arch linux_x86 linux_x86/libtest.so \
  -arch linux_x64 linux_amd64/libtest.so \
  test.h \
  -mode StandaloneJar \
  -jar test.jar

这将按照BridJ所期望的格式捆绑库(请参阅its wiki page about embedded binaries):

unzip -l test.jar给出:

代码语言:javascript
运行
复制
    ...
    0  04-09-15 22:45   lib/win32/test.dll
    0  04-09-15 22:45   lib/win64/test.dll
    0  04-09-15 22:45   lib/darwin_universal/libtest.dylib
    0  04-09-15 22:45   lib/linux_x86/libtest.so
    0  04-09-15 22:45   lib/linux_x64/libtest.so

目前预计每个平台的库名都是lib<name>.(so|dylib)<name>.dll,尽管这可以很容易地修复if you ask

(注:我是“BridJ &JNAerator”的作者)

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29530261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档