java - 用于 java (JNI) 的 x86 到 x64 库包装器

标签 java dll x86 java-native-interface 64-bit

我有一个用于发送器设备的 x86 dll(可能是用 C++ 编写的,但当然没有源代码)。我的操作系统是 Windows 7 x64。 我也有 JVM x64。是否可以对这个 x86 dll 做 smth 以将它与 x64 JVM 一起用于 native 函数调用?设备制造商不想编写 x64 版本。是否可以用 C++ 编写一个 x64 dll 包装器,它可以从 dll 中的 API 调用一些所需的函数并将它们提供给外部?

类似于:

Java Native Function Call -> MyX64DLLWrapper.dll -> OriginalX86Lib

最佳答案

您将不得不在 32 位 JVM 中使用 32 位 native 代码。或者编写一个外部 32 位程序来为 dll 提供接口(interface),然后从 JVM 启动程序并与之通信。例如,可以通过 stdout/stdin 执行此操作。这类似于 Erlang 驱动程序,这种方法的优点是它可以使系统更加稳定。例如如果驱动程序崩溃,您可以从 JVM 重新启动它,它不会关闭 JVM。

一些与子进程通信的建议在这里:Running bash from Java

关于java - 用于 java (JNI) 的 x86 到 x64 库包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12358152/

相关文章:

java - split 函数不返回

java - 如何修改我的方法以在 O(N) 或 O(N * log N) 中搜索然后删除重复项?

c++ - 在 C++ dll 中保持 MATLAB 引擎打开

c - 内存 - 自然地址边界

java - ArrayIndexOutofBoundException - Java - Android - 接收流数据并存储在多维数组中 Java

java - Eclipse 插件的自定义启动画面(非 RCP)

c++ - 导出 DLL - 删除头文件

c# excel dll - 无法添加对指定文件的引用 - regasm

c - 难以理解的GCC汇编指令计算条件跳转

assembly - 主要发现 - 一些数组值被覆盖?