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

我有一个发送器设备的x86 dll(可能用C语言编写,但当然没有来源).我的操作系统是
Windows 7 x64.

我也有JVM x64.是否可以使用此x86 dll与x64 JVM一起使用它来进行本机函数调用?设备制造商不希望编写x64版本.是否可以在C中编写一个x64 dll包装器,它可以从dll中的API调用一些必需的函数并将它们提供给外部?

就像是:

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

最佳答案 您将不得不在32位JVM中使用32位本机代码.要么是要么写一个外部32位程序来为dll提供接口,要么从JVM启动程序并与之通信.例如,可以通过stdout / stdin执行此操作.这类似于Erlang驱动程序,这种方法的一个优点是它可以使系统更加稳定.例如如果驱动程序崩溃,您只需从JVM重新启动它,它就不会取消JVM.

与子流程进行通信的一些建议如下:Running bash from Java

点赞