Отладка ошибки времени загрузки в программе C ++ SDL2, скомпилированной с VS2015 на Win10

Я пишу проект на C ++ с SDL2 на 64-битной Windows 10 с использованием Visual Studio 2015. Недавно я купил новый ноутбук с Windows 10 и клонировал свой проект из github. Мой проект компилируется правильно, но я получаю следующую ошибку при запуске:

Приложение не может запуститься правильно (0xc000007b). Нажмите кнопку ОК, чтобы закрыть приложение.

Основываясь на моих исследованиях, эта ошибка обычно вызывается загрузкой несовместимой библиотеки DLL, например 64-битная версия вместо 32-битной. Предложения, которые я нашел до сих пор, включают:

Проверка того, что я использую 32-битные версии DLL SDL2Установка / переустановка x86-версии распространяемого пакета Visual C ++ для Visual Studio 2015С помощьюЗависимость Уокер выяснить, какая DLL не работает

Мой проект настроен на сборку для Win32, и я гарантировал, что я использую 32-разрядные версии всех библиотек DLL, на которые я явно ссылаюсь (libfreetype-6, libpng16-16, SDL2, SDL2_image, SDL2_mixer и SDL2_ttf) , Я подтвердил, что распространяемый x86 VC ++ установлен на моей машине.

Наконец, я попытался использовать Dependency Walker, чтобы определить, какая DLL может быть причиной проблемы (хотя я читал предостережения о том, что Dependency Walker имеет много ложных срабатываний). Это были результаты:

Статический анализ зависимости Уокера

Результаты профилирования Dependency Walker

После этого профилировщик зависает и никогда не продолжается. Обратите внимание, что компоненты SDL и среда выполнения VC загружаются без ошибок.

Программа правильно компилируется и загружается на двух моих старых машинах, одна из которых работает под управлением 32-разрядной Windows 7, а другая - под 64-разрядную Windows 10.

Теперь для актуального вопроса. Какие еще шаги я могу предпринять для устранения этой аварии? Или кто-то видит из предоставленной мной информации, что я делаю неправильно?

Смежные вопросы:

Приложение не удалось запустить правильно (0xc000007b)Win 7, 64 бит, проблемы с dllПри использовании SDL_image в Visual studio 2010 с ошибкой «приложение не удалось запустить правильно 0xc000007b»Редактировать:

Как предложил rflobao, я использовал 64-битную версию Dependency Walker на 32-битном exe. Вот новый вывод моего прогона профилирования:

В этот момент, как и раньше, Зависимость Уокер зависает. Я все еще полностью потерян и не чувствую, что могу приблизиться к тому, чтобы определить причину проблемы.

 Jonathan Sharman19 июн. 2016 г., 04:31
В этом есть смысл. Знаете ли вы о систематическом способе для меня определить, что это такое? Зависимость Уокер, кажется, слишком устарела, чтобы быть полезной, и, конечно, на моем пути можно найти сотни библиотек DLL.
 PaulMcKenzie17 июн. 2016 г., 06:00
ОС Windows отвечает запоиск и нахождение первой DLL это имеет соответствующее имя. Может случиться так, что существует 64-разрядный компонент, о котором вы можете не знать, который находится в каталоге в вашей системной переменной PATH, и Windows обнаруживает эту DLL и пытается загрузить ее.
 paulm06 июл. 2016 г., 09:30
Вы действительно достигли основной функции? Вы установили редисторы 2015 года на эту машину?
 cup19 июн. 2016 г., 18:43
В обходчике зависимостей нажмите на значок C: \ - он скажет вам, откуда он берет файлы. Вы пробовали запустить его из 64-битной командной строки (в Windows / System32) и из 32-битной командной строки (в Windows / syswow64).
 paulm06 июл. 2016 г., 09:32
На самом деле ваш 64-битный exe-файл должен загружать 32-битную dll, скопировать все dll в тот же каталог, что и exe-файл, и проверить, работает ли он, также подтвердить, что каждая dll на самом деле является 64-битной

Ответы на вопрос(0)

Ваш ответ на вопрос