2016-06-06 3 views
3

среды:для Windows 10 не загружается DLL-библиотеки для исполняемого выпуска

ОС Windows 10 x64

Visual Studio 2008 (да, я знаю)

Попытка создания приложения очень простой x64 C++ с помощью GStreamer 1,0 , Конвейер работает очень хорошо в режиме отладки (даже записывая изображения на диск), но программа вылетает в режиме, как только любая функция вызывается gstreamer. Я собрал следующие доказательства для версии:

  • Отладка в Visual Studio показывает, что требуется GStreamer/библиотеки GThread не получают загружены на вкладке Модули
  • Разорвать путь к библиотекам GStreamer/GThread по перемещение/переименование содержащего каталога (C:/gstreamer/x64_86/bin) не влияет на режим выпуска. Если я попробую это в режиме отладки, тогда приложение жалуется во время выполнения, что не может найти нужные DLL.
  • Запуск dumpbin/dependents в программе выпуска показывает, что существует зависимость от gstreamer/gthread. То же самое верно для отладочной версии.
  • Запуск приложения из командной строки вместо VS производит один и тот же результат (аварии)

Я заметил, что Win10 умнее и предупредит вас, если несколько библиотек DLL не хватает во время выполнения (а не только для первого один), но здесь я озадачен тем, почему он даже не загружает их, а не предупреждает меня, что они пропали без вести. Что еще я могу использовать для отладки этой проблемы?

+0

Вы можете попробовать использовать Process Monitor, чтобы узнать, что ищет процесс и где. https://technet.microsoft.com/en-us/sysinternals/processmonitor – bialpio

ответ

1

Вещи, которые вызвали, чтобы это случилось со мной в прошлом:

  1. В растворе несколько проектов, весь проект построение настройка не синхронизируется вверх. Другими словами, если я построю решение в 64-разрядной конфигурации Release, отображает ли Configuration Manager все проекты, созданные в этом режиме, или некоторые из них не имеют/имеют неправильную настройку сборки?

  2. 32-разрядная версия DLL по какой-то причине торчит. Это может произойти, если сборка происходит в каталоге, отличном от стандартного. В этом случае просто удалите каталог сборки и перестройте.

0

Оказывается, это очень сложная проблема, связанная с GStreamer, связанная с C-Run Time lib. Более тщательный осмотр GStreamer installation docs моим коллегой показал, что GStreamer использует «вездесущий» ЭЛТ из набора драйверов устройств Windows версии 7.1.0 вместо обычного CRT, который поставляется с Visual Studio. Наша первая ошибка состояла в том, чтобы попытаться использовать библиотеки GStreamer, созданные VS2010, в VS2008. Второй ошибкой был непреднамеренный микс & матч из CRT libs.

Мы пытались игнорировать инструкции по сборке, требующие использования файлов-реквизитов, поскольку они предназначены для VS2010, и мы по-прежнему имеем дело с 2008 годом. Это было неправильно - файл реквизита инструктировал Visual Studio использовать CRT из DDK - которые необходимо установить отдельно. The following section в документации по установке упоминает это подробно. Все еще не совсем уверен, почему это работает в режиме отладки.

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