SDL_Image IMG_Load не работает на png с: "Не удалось загрузить libpng16-16.dll:"

Всякий раз, когда я пытаюсь загрузить PNG, используя функцию IMG_Load SDL_Image, он выдает ошибку Failed loading libpng16-16.dll:, У меня есть все нужные DLL в правильном пути, и я могу использовать другие части SDL_Image, но по какой-то причине он не может загрузить DLL libpng. Как я могу это исправить? Любая помощь приветствуется.

6 ответов

Решение

Смотрите мою статью " SDL2: загрузка изображений с SDL_image":

Если вы собираетесь запускать из Visual Studio, убедитесь, что изображение находится в той же папке, что и ваш файл main.cpp; в противном случае, если вы работаете прямо с исполняемого файла, изображение должно находиться в одной папке с ним.

Излишне говорить, что то, что я написал об этом изображении, относится и к DLL.

Похоже, что libpng16-16.dll имеет зависимость от zlib1.dll для MinGW-w64 (32-разрядная версия). Попробуйте включить zlib в ваши зависимости - включите DLL в папку, где запускается исполняемый файл.

VS не ищет dll в любом месте, кроме dir выполнения, поэтому вам, вероятно, нужно скопировать эту dll в каталог Debug/ на пути вашего решения.

Очень нишевый ответ, но для тех, кто сталкивается с этой проблемой из-за pySDL2, это может быть вызвано тем, что ваш интерпретатор Python не соответствует требованиям. Для меня использование установки магазина Windows для интерпретатора Python 3.10 вызвало эту проблему. Однако, когда я перешел на 3.10 с python.org, все мои проблемы были исправлены.

Эта ссылка показывает, как настроить библиотеку SDL /libpng16-16.dll, которая будет доступна для доступа compiler.exe (последний шаг перед примером кода)

Страница вашей программы -> Событие сборки -> Событие после сборки
в моем случае у меня есть
скопируйте "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

Я просто заменил zlib1.dll в system32 и SysWOW64 на тот, который скачан с https://github.com/OctaForge/OF-Windows/blob/master/bin_win32/zlib1.dll. и работал хорошо

Другие вопросы по тегам