Java:dll之间的切换取决于系统架构(32/64)
我有一个 Java 程序使用一些 dll。由于这些嵌入的 dll 必须针对特定的系统架构(32 或 64 位)构建,我想创建一种方法/东西,允许我的程序在 32/64 位版本的 dll 之间切换(或者在程序运行时禁用库加载)在 64 位系统上)
我希望有一个不同于制作两个版本的程序的解决方案
提前致谢, 达米安
I have a Java program uses some dlls. As these embeded dlls have to be built for a specific system architecture (32 or 64bits) I want to make a method/something that allow my program to switch between 32/64 bits version of dlls (or disable the library load if the program run on a 64 bits system)
I hope there is a solution different from making two versions of the program
Thanks in advance,
Damien
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用系统属性:
Use system properties:
您可以使用系统属性
sun.arch.data.model
注意:此属性仅在 Sun VM 上定义!
参考:
代码,如何区分32
和 64 位操作?
You can use the System Property
sun.arch.data.model
Careful: this property is defined on Sun VMs only!
Reference:
code, how do I distinguish between 32
and 64-bit operation?
一种蛮力的方法是跑步
A brute force way is to run
如果您使用 OSGi 和 JNI,则可以通过 Bundle-NativeCode 在清单中指定适合不同平台和架构的 DLL。
例如:
If you're using OSGi and JNI, you can specify the DLLs appropriate for different platforms and architectures in the manifest via Bundle-NativeCode.
For example:
定义一个代表 DLL API 的 java 接口并提供两种实现,一种调用 32 位 DLL,另一种调用 64 位版本:
Define a java interface that represents your DLL API and provide two implementations, one that calls the 32 bit DLL and another one that calls the 64 bit version: