如何在一个标题下使用多个动态库?

 2023-01-20    322  

问题描述

我正在使用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_mac.dylib,libtest_linux_x86.so和libtest_linux_amd64.so),我都希望全部打包进入并由一个罐子支撑.

有什么方法可以使用一种JNAerator来执行此”多合一”方法,或者我必须为每个平台生成一个不同的JAR文件?

推荐答案

jnaerator具有-arch选项,只是为此而设计的,尽管目前对文档的模糊性很大.它:

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 的期望的格式捆绑库. code.google.com/p/bridj/wiki/librarieslookup”> wiki页面关于嵌入式二进制文件):

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,尽管可以很容易地修复如果你问.

(注意:我是Bridj&jnaerator的作者)

以上所述是小编给大家介绍的如何在一个标题下使用多个动态库?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/26098.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。