Почему я вижу зависимость MSVCR90, даже если я установил параметр / MT? - PullRequest
5 голосов
/ 18 июня 2011

Я создаю DLL в Visual C ++ 2008 и хочу, чтобы среда выполнения статически была связана с DLL. Поэтому я вошел в параметры проекта и установил для Runtime Library значение Multi-threaded (/MT). Это всегда работало для других проектов в прошлом. Но когда я его создаю, я все равно получаю Dependency Walker, показывающий MSVCR90.dll в списке.

Кто-нибудь знает, что может вызвать это?

1 Ответ

4 голосов
/ 18 июня 2011

Project + Properties, Линкер, Командная строка.Добавьте параметр / verbose.Build + Rebuild.В окне «Вывод» отображается компоновщик, который ищет символы.Остерегайтесь msvcrt.lib, это та, которая устанавливает зависимость от msvcr90.dll

Типичная причина - связывание .lib с одним или несколькими файлами .obj, скомпилированными с / MD.Зависимость от msvcrt.lib внедряется с помощью директивы #pragma comment (lib, msvcrt.lib).Это говорит компоновщику искать msvcrt.lib без явного указания его как зависимости в компоновщике, вводе, дополнительных зависимостях.

...