每当我尝试使用 SDL_Image 的 IMG_Load 函数加载 PNG 时,都会出现错误Failed loading libpng16-16.dll:
。我在正确的路径中拥有所有正确的 dll,我可以使用 SDL_Image 的其他部分,但由于某种原因它无法加载 libpng dll。我怎样才能解决这个问题?任何帮助表示赞赏。
5 回答
似乎libpng16-16.dll
依赖于zlib1.dll
MinGW-w64(32 位)。尝试将 zlib 包含到您的依赖项中——将 DLL 包含在可执行文件运行的文件夹中。
请参阅我的文章“ SDL2:使用 SDL_image 加载图像”:
如果要从 Visual Studio 运行,请确保图像与 main.cpp 文件位于同一文件夹中;否则,如果您直接从可执行文件运行,则图像应与它位于同一文件夹中。
不用说,我在这里写的关于图像的内容也适用于 DLL。
VS 不会在除执行目录之外的任何地方搜索 dll,因此您可能需要将该 dll 复制到解决方案路径上的 Debug/ 目录。
此链接向您展示如何设置 SDL library/libpng16-16.dll 以供 compiler.exe 访问(示例代码之前的最后一步)
yourProgram 属性页面 -> 构建事件 -> 构建后事件
在我的情况下,我
复制了“C:\Users\MehdiB\Desktop\C Program\Library\SDL2-devel-2.0.4-VC\SDL2-2.0.4\ lib\x86\SDL2.dll” “$(OutDir)SDL2.dll”;
复制“C:\Users\MehdiB\Desktop\C Program\Library\SDL2_image-devel-2.0.1-VC\SDL2_image-2.0.1\lib\x86\SDL2_image.dll”“$(OutDir)SDL2_image.dll”;
复制“C:\Users\MehdiB\Desktop\C Program\Library\dll\libjpeg-9.dll”“$(OutDir)libjpeg-9.dll”
在这里你可以得到这个dll
我刚刚将 system32 和 SysWOW64 中的 zlib1.dll 替换为从 https://github.com/OctaForge/OF-Windows/blob/master/bin_win32/zlib1.dll下载的那个。 并且运行良好