Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.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
C++ 无法使用交叉编译的libpng16-16.dll在w10上执行_C++_Linux_Mxe - Fatal编程技术网

C++ 无法使用交叉编译的libpng16-16.dll在w10上执行

C++ 无法使用交叉编译的libpng16-16.dll在w10上执行,c++,linux,mxe,C++,Linux,Mxe,我遇到了一个问题,我使用mxe(x86_64-w64-mingw32.shared)在linux for windows上构建并链接了一个windows应用程序,构建和链接运行良好。然后我复制粘贴所有有用的dll(这些dll都是交叉编译的,除了x64-msvcrt-ruby230.dll,它是我从官方windows安装程序获得的) 我用wine测试了我的程序,没问题,它工作起来像一个charme,我发现它与linux版本没有区别。但一旦我将所有内容放入测试VM(virtualbox中的windo

我遇到了一个问题,我使用mxe(x86_64-w64-mingw32.shared)在linux for windows上构建并链接了一个windows应用程序,构建和链接运行良好。然后我复制粘贴所有有用的dll(这些dll都是交叉编译的,除了x64-msvcrt-ruby230.dll,它是我从官方windows安装程序获得的)

我用wine测试了我的程序,没问题,它工作起来像一个charme,我发现它与linux版本没有区别。但一旦我将所有内容放入测试VM(virtualbox中的windows10 64位)中,我就会收到错误消息:

在动态链接库D:\libpng16-16.dll中找不到过程入口点充气验证

libpng16-16.dll存在,当我(在linux中)转储它时:

objdump-x libpng16-16.dll | grep充气

那么很明显,符号“imp”充气验证存在,那么我是否遗漏了什么?有人知道如何解决这个问题吗


提前感谢

刚刚偶然发现了同样的问题。它原来是PATH环境变量中的一个限定dll文件。请尝试使用
ldd
命令找出哪些dll文件可能可疑

例如,在我的例子中,罪魁祸首是来自英特尔无线软件的zlib1.dll

E:\samples\sfmlSound>ldd sfmlSound.exe ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7ffee3e70000) KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ffee3030000) ... zlib1.dll => /c/Program Files/Intel/WiFi/bin/zlib1.dll (0x7ffed0f10000) ... E:\samples\sfmlSound>ldd sfmlSound.exe ntdll.dll=>/c/WINDOWS/SYSTEM32/ntdll.dll(0x7ffee3e70000) KERNEL32.DLL=>/c/WINDOWS/System32/KERNEL32.DLL(0x7ffee030000) ... zlib1.dll=>/c/Program Files/Intel/WiFi/bin/zlib1.dll(0x7ffed0f10000) ...
解决冲突后,程序将正确加载。

在我的例子中,我替换了libpng16-16文件,这很有效。

对于mzself,这是因为官方ruby dll的某些依赖性与mxe编译的不一致。我从零开始在linux上为windows构建ruby,它可以正常工作。如何替换?我这里有一个是由mxe构建的,您在哪里寻找替代方案?我在c:\program文件中搜索了一个,在Inkscape中找到了一个。 E:\samples\sfmlSound>ldd sfmlSound.exe ntdll.dll => /c/WINDOWS/SYSTEM32/ntdll.dll (0x7ffee3e70000) KERNEL32.DLL => /c/WINDOWS/System32/KERNEL32.DLL (0x7ffee3030000) ... zlib1.dll => /c/Program Files/Intel/WiFi/bin/zlib1.dll (0x7ffed0f10000) ...