2016-07-06 3 views
-1

Я пытаюсь создать приложение с OpenGL и GStreamer. У меня есть несколько файлов, связанных с библиотеками GStreamer, но пока они не включены в основной исходный файл. Программа компилируется просто отлично, но после запуска я получаю сообщение об ошибкеVisual Studio 15: 0xc000007b после добавления существующих файлов в проект

Приложение не смогла начать правильно (0xc000007b).

У меня нет больше информации об ошибке.

Но при исключении связанных с GStreamer файлов из проекта, оставив каталоги include и library на странице свойств нетронутыми, код компилируется и запускается без проблем.

Я создаю платформу Win32 и проверил, что я ссылаюсь на правильные версии библиотек GStreamer.

Более того, при попытке запустить сборку для x64 (также, я полагаю, правильно привязан), я получаю ту же ошибку, даже если файлы исключены из проекта.

Может ли кто-нибудь сказать, что не так из этой разреженной информации, или, по крайней мере, объяснить, почему приложение не будет работать, когда я добавляю файлы, которые не используются?

Я могу предоставить дополнительную информацию о спросе, но прямо сейчас, я действительно не знаю, что имеет значение.

+1

Время, чтобы запустить отладчик и посмотреть, что вызывает сбой. –

+2

Скорее всего вы загружаете 64-разрядные DLL-файлы из 32-разрядного приложения. Это не имеет ничего общего с процессом сборки - вы можете указать все нужные библиотеки во время сборки, это не имеет значения. Это ОС Windows, которая отвечает за поиск и поиск DLL (ов), а Windows все равно, являются ли библиотеки DLL неправильными, если имена, которые он ищет, совпадают. [См. Это] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586%28v=vs.85%29.aspx) – PaulMcKenzie

+0

@Jesper Кажется, что это наиболее разумно, но приложение даже не запускается до появления ошибки. Я попробовал работать с оператором return в качестве первой строки в функции main(), без удачи – TheVaffel

ответ

1

Как было предложено PaulMcKenzie, оказалось, что Windows просматривает каталоги в PATH и берет первую DLL, которая подходит, хотя они были созданы для 64-битной платформы.

Причиной ошибки при запуске с помощью x64 оказалось то, что некоторые другие DLL-файлы, которые я загрузил из публичного репозитория GitHub, были созданы для 32-разрядного программного обеспечения.

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