gpt4 book ai didi

java - 如何在一个 header 下将 JNAerator 与多个动态库一起使用?

转载 作者:搜寻专家 更新时间:2023-11-01 01:33:32 25 4
gpt4 key购买 nike

我正在使用 JNAerator 生成一个我可以包含在项目中的 jar 文件,我想支持每个操作系统的动态库并将所有内容归档到这个 jar 中。

到目前为止,在摆弄 JNAerator 的过程中,我已经能够使用如下命令包含单个动态库:

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 中并由一个 jar 支持。

有什么方法可以通过运行一次 JNAerator 来实现这种“一体式”方法,还是我必须为每个平台生成不同的 jar 文件?

最佳答案

JNAerator 有一个 -arch专为此设计的选项,虽然the doc is currently terribly vague about it :

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给出:

    ...
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 的作者)

关于java - 如何在一个 header 下将 JNAerator 与多个动态库一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29530261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com