如何从 Java 访问 64 位 DLL?
How to Access 64bit DLLs from Java?
我使用 JDK(64 位)并使用 JNA 库访问 DLL。但是这个dll在C:\Windows\SysWWOW64,所以是64位的。我如何访问它?
我的处理器是:64 位。我的 JDK 是 64 位。我的 DLL 是 64 位的。
我的程序:
LibraryMethods libMethods = (LibraryMethods) Native.loadLibrary("msxfs.dll", LibraryMethods.class);
我的 JNA 接口:
import com.sun.jna.Library;
public interface LibraryMethods extends Library{
public short WFSStartUp(int dwVersionsRequired, String lpWFSVersion);
}
错误:
java.lang.UnsatisfiedLinkError: %1 is not a valid Win32 application.
如果库在 SysWoW64 中,那么它是 32 位而不是 64 位。
所以需要使用JDK32位来加载DLL
您可以在这个问题
中找到更多info about SysWow64
我使用 JDK(64 位)并使用 JNA 库访问 DLL。但是这个dll在C:\Windows\SysWWOW64,所以是64位的。我如何访问它? 我的处理器是:64 位。我的 JDK 是 64 位。我的 DLL 是 64 位的。
我的程序:
LibraryMethods libMethods = (LibraryMethods) Native.loadLibrary("msxfs.dll", LibraryMethods.class);
我的 JNA 接口:
import com.sun.jna.Library;
public interface LibraryMethods extends Library{
public short WFSStartUp(int dwVersionsRequired, String lpWFSVersion);
}
错误:
java.lang.UnsatisfiedLinkError: %1 is not a valid Win32 application.
如果库在 SysWoW64 中,那么它是 32 位而不是 64 位。
所以需要使用JDK32位来加载DLL
您可以在这个问题
中找到更多info about SysWow64