chr*_*isw 5 java java-native-interface
是否可以在java.library.path上放置两个版本(64位和32位)的本机DLL?
我担心的是,如果我将64位和32位版本放在本机库路径上,那么在运行不同的架构时会出现一个不满意的链接异常.如果是这样,首选解决方案是什么?在我的gradle/maven构建脚本中有一个标记链接正确的库?
我目前正在做以下事情: -
-Djava.library.path=/out/lib/win64jdk;/out/lib/winx86jdk
Run Code Online (Sandbox Code Playgroud)
两者都包含架构的相关DLL.我目前不确定JVM是否可以确定符号.
如果我是你,我会确保只有适当的本机dll
位于可分发包中,而将另一个排除在外。
然而,如果您想分发两者,那么您需要编写一些 Java 代码来加载正确的库。System.loadLibrary
用于加载本机库,正常的做法是在 Java 代码的静态初始化程序中调用它。
除非您愿意粗暴地依赖异常,否则可以使用以下代码:
System.getProperty("sun.arch.data.model")
Run Code Online (Sandbox Code Playgroud)
加载适当的本机库。该函数将相应地返回 32 或 64。
归档时间: |
|
查看次数: |
1105 次 |
最近记录: |