9

每当我尝试使用 SDL_Image 的 IMG_Load 函数加载 PNG 时,都会出现错误Failed loading libpng16-16.dll:。我在正确的路径中拥有所有正确的 dll,我可以使用 SDL_Image 的其他部分,但由于某种原因它无法加载 libpng dll。我怎样才能解决这个问题?任何帮助表示赞赏。

4

5 回答 5

23

似乎libpng16-16.dll依赖于zlib1.dllMinGW-w64(32 位)。尝试将 zlib 包含到您的依赖项中——将 DLL 包含在可执行文件运行的文件夹中。

于 2015-07-03T08:43:02.283 回答
6

请参阅我的文章“ SDL2:使用 SDL_image 加载图像”:

如果要从 Visual Studio 运行,请确保图像与 main.cpp 文件位于同一文件夹中;否则,如果您直接从可执行文件运行,则图像应与它位于同一文件夹中。

不用说,我在这里写的关于图像的内容也适用于 DLL。

于 2014-01-31T18:59:40.260 回答
1

VS 不会在除执行目录之外的任何地方搜索 dll,因此您可能需要将该 dll 复制到解决方案路径上的 Debug/ 目录。

于 2014-01-31T18:27:44.393 回答
0

此链接向您展示如何设置 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

于 2016-03-18T02:28:06.450 回答
-2

我刚刚将 system32 和 SysWOW64 中的 zlib1.dll 替换为从 https://github.com/OctaForge/OF-Windows/blob/master/bin_win32/zlib1.dll下载的那个。 并且运行良好

于 2018-07-09T20:42:06.840 回答