如何在一个 header 下使用多个动态库的 JNAerator?
How to use JNAerator with multiple dynamic libraries under one header?
我正在使用 JNAerator 生成一个我可以包含在项目中的 jar 文件,我想支持每个操作系统的动态库并在这个 jar 中全部归档。
到目前为止,在摆弄 JNAerator 的过程中,我已经能够使用如下命令包含单个动态库:
java -jar jnaerator.jar test.dll test.h [...] -mode StandaloneJar
但是,这只打包 test.dll
,而我有多个系统的动态库(test_win32.dll
、test_win64.dll
、libtest_mac.dylib
、libtest_linux_x86.so
和libtest_linux_amd64.so
) 我希望所有这些都打包到一个 jar 中并由一个 jar 支持。
有什么方法可以使用一个 运行 JNAerator 来实现这种 "all-in-one" 方法,还是我必须为每个平台生成不同的 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 (see 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 的作者)
我正在使用 JNAerator 生成一个我可以包含在项目中的 jar 文件,我想支持每个操作系统的动态库并在这个 jar 中全部归档。
到目前为止,在摆弄 JNAerator 的过程中,我已经能够使用如下命令包含单个动态库:
java -jar jnaerator.jar test.dll test.h [...] -mode StandaloneJar
但是,这只打包 test.dll
,而我有多个系统的动态库(test_win32.dll
、test_win64.dll
、libtest_mac.dylib
、libtest_linux_x86.so
和libtest_linux_amd64.so
) 我希望所有这些都打包到一个 jar 中并由一个 jar 支持。
有什么方法可以使用一个 运行 JNAerator 来实现这种 "all-in-one" 方法,还是我必须为每个平台生成不同的 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 (see 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 的作者)