Ссылка (случайно?) Завершается с помощью визуальных библиотек отладки - PullRequest
2 голосов
/ 28 мая 2009

У меня регулярно эта проблема под Visual 2005 или 2008:

Когда я компилирую кучу библиотек DLL (нативные C, C ++, управляемые), иногда некоторые из них неправильно связываются с некоторыми библиотеками отладки Microsoft. На выходе ничего не упоминается (без предупреждения, без ошибок). Я не могу знать, пока я не запущу свою программу и не получу «Исключение модуля не найдено» без дополнительных объяснений.

Когда я открываю Dll с помощью Dependency Walker, некоторые из них отсутствуют MSVCR90D.DLL и MSVCP90D.DLL . Если мне повезет, мне просто нужно восстановить поврежденную dll, чтобы получить действующую. В худшем случае перестройка создает другую поврежденную DLL, пока не произойдет таинственный момент (часы или дни спустя), когда полученная действительная DLL ... звучит безумно, не правда ли?

У действительных dll есть такой путь:

C: \ Windows \ WinSxS \ x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f \ MSVCP90D.DLL

Это сводит меня с ума! ... Есть идеи? Спасибо.

Ответы [ 2 ]

1 голос
/ 09 июня 2010

Может быть, это путает, какую DLL использовать. Выполнить поиск в C: \ Program files \ Visual Studio ??? для MSVCR90D.DLL и он должен быть в папке C: \ Program Files \ Visual Studio ??? \ sdk ... \ bin Я не уверен, какая у вас версия. Затем в вашей среде PATH задайте этот путь там, чтобы найти этот путь к корзине.

Я видел много раз, когда есть много dll с одинаковым именем и программой запутывается, с каким он должен быть связан. Попробуйте и посмотрите, поможет ли это

Janet

1 голос
/ 28 мая 2009

Сборка с / MT вместо /MD.

...