& quot; Приложение не удалось правильно запустить & quot; после включения vld.h

Я включил vld.h, vld.lib и vld_x86.dll в свой проект Win32 с Visual Studio 2010. Он собирается правильно, но при выполнении вылетает с таким сообщением:

"The application was unable  to start correctly (0xc0150002). Click OK to close the application."

Я запускаю его с помощью Dependency Walker, но он показывает ошибку рядом:

Error: The Side-by-Side configuration information for "D:\project\..\debug\VLD_X86.DLL" contains errors. The application has failed to start because its side-by-side configuration is incorrect.)

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

https://vld.codeplex.com/discussions/360243

Он работает правильно, только если я прокомментировал следующую строку на vld.h

// Force a symbolic reference to the global VisualLeakDetector class object from
// the DLL. This ensures that the DLL is loaded and linked with the program,
// even if no code otherwise imports any of the DLL's exports.
//#pragma comment(linker, "/include:__imp_?g_vld@@3VVisualLeakDetector@@A")

Тем не менее, если я закомментировал эту строку, vld вообще ничего не выводит (так же как и без интеграции с vld)

Кто-нибудь имел эту проблему раньше? Любые предложения будут оценены, спасибо заранее!

16

Решение

У меня тоже была эта проблема, вам нужно добавить все эти файлы в тот же каталог, что и ваш vld_x86.dll / vl_x64.dll:

Microsoft.DTfW.DHL.manifest

dbghelp.dll

Который пришел из папки bin Win32 / Win64 из Visual Leak Detector. Нашел это из: https://vld.codeplex.com/wikipage?title=Building%20Visual%20Leak%20Detector%20from%20Source

22

Другие решения

У меня была эта проблема (это сообщение об ошибке) тоже. В моем случае файл vld_x86.dll, скорее всего, в другой версии, отличной от ожидаемой, был предварительно установлен и зарегистрирован другим программным обеспечением. (кажется, всем нравится VLD) Таким образом, он был загружен вместо vld_x86.dll в пути, по которому был создан VLD. Отмена регистрации сторонней DLL решает проблему.

Следовательно, вы можете проверить вывод на загрузку DLL из экзотических путей.

2

ЕСЛИ ВЫ ИСПОЛЬЗУЕТЕ ВИЗУАЛЬНЫЕ СТУДИИ:
— Самое простое исправление, если вы не связывались со свойствами своего проекта в разделах include, linker, и убедитесь, что вы не добавили VLD вручную. Вместо этого очистите включенные вами записи и сохраните ваш проект.
-Закройте его, затем установите последний VLD, и он автоматически создаст наследующее родительское наследие для ваших проектов Visual Studio, включая пути к окружению.

0

Другие могут все еще войти в проблему;
Потенциальным решением проблемы является установка VLD версии 2.5.1, которую можно скачать с github: https://github.com/KindDragon/vld/releases/tag/v2.5.1

Это приносит исправление, объясненное выше, оно включает dbghelp.dll

0

Я получил такую ​​ошибку, когда попытался запустить проект сразу после установки vld. Решением для меня был повторный вход в систему. Потому что установщик vld добавляет новые пути в PATH, а VS не видит их без повторного входа в систему. В противном случае вы можете использовать решение с копированием файлов dbghelp.dll и .manifest.

0
По вопросам рекламы [email protected]