Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java For Windows XP中加载dll_Java - Fatal编程技术网

在Java For Windows XP中加载dll

在Java For Windows XP中加载dll,java,Java,我正在尝试使用我使用Makefile在linux机器上构建的System.loadLibrary(“myDllFile”)加载dll。我得到一份工作 java.lang.UnsatisfiedLinkError c:\test\myDllFile.dll:无法在IA 32位平台上加载此.dll(机器代码=0x101) 运行包含loadLibrary语句的主java类时发生异常。我正在尝试在Windows XP上运行java类。windows xp(32位)和windows 7(64位)是否需要单

我正在尝试使用我使用Makefile在linux机器上构建的
System.loadLibrary(“myDllFile”)
加载dll。我得到一份工作

java.lang.UnsatisfiedLinkError c:\test\myDllFile.dll:无法在IA 32位平台上加载此.dll(机器代码=0x101)


运行包含
loadLibrary
语句的主java类时发生异常。我正在尝试在Windows XP上运行java类。windows xp(32位)和windows 7(64位)是否需要单独的dll?

没错。您必须移植本机代码才能在每个操作系统上运行,并将其单独链接

但是,如果您实际上有一个
.dll
,而不是
.so
,那么听起来您可能已经为Win32交叉编译了。(可能使用MinGW?)如果您有这样的交叉编译器设置,您应该能够指定Win32与Win64的构建。或者,如果您的Makefile碰巧出现问题,您可以使用
setarch i686
,让64位Linux系统假装为32位


如果你有一个Linux
。那么
,移植到Windows需要做更多的工作…

没错。您必须移植本机代码才能在每个操作系统上运行,并将其单独链接

但是,如果您实际上有一个
.dll
,而不是
.so
,那么听起来您可能已经为Win32交叉编译了。(可能使用MinGW?)如果您有这样的交叉编译器设置,您应该能够指定Win32与Win64的构建。或者,如果您的Makefile碰巧出现问题,您可以使用
setarch i686
,让64位Linux系统假装为32位


如果您有一个Linux
。所以
,那么需要做更多的工作才能移植到Windows…

是的,Win32.dll与Windows/64位.dll不兼容。Linux共享库同样具有不兼容的elf-32和elf-64格式。这四种相互排斥的二进制格式通常都不会与Java一起使用。除非您使用的是JNI.so,否则我必须在32位机器上创建DLL,或者是否有makefile选项可以这样做?这取决于谁编写了您的makefile,以及您如何编译它。有时候Linux可以用setarch i686 make“愚弄”make文件;但是这是非常依赖于项目的。是的,Win32.dll与Windows/64位.dll不兼容。Linux共享库同样具有不兼容的elf-32和elf-64格式。这四种相互排斥的二进制格式通常都不会与Java一起使用。除非您使用的是JNI.so,否则我必须在32位机器上创建DLL,或者是否有makefile选项可以这样做?这取决于谁编写了您的makefile,以及您如何编译它。有时候Linux可以用setarch i686 make“愚弄”make文件;但这完全取决于项目。