我有一个用于发送器设备的 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/