Это огромная проблема, поскольку она может привести ко многим неожиданным сбоям вашего приложения, И вы не можете распространять приложение, которое связывает msvcrtd.lib
, так как вам не разрешено распространять среды отладки C ++ Visual Studio.
Хотя /NODEFAULTLIB
должно исправить это, вы должны решить саму проблему.
Как сказал Касабланка, msvcrtd.lib
связан в режиме выпуска, но он должен быть связан только в режиме отладки.
Это не означает, что ваше собственное приложение имеет неправильные настройки компоновщика. Любая из библиотек, которые вы используете в своем проекте, также может иметь неправильные настройки.
Обычно я делаю это, чтобы открыть все файлы выпуска .lib
, на которые ссылается ваше приложение, с помощью текстового редактора, который может открывать такие большие двоичные файлы (как SciTE ), а затем Я ищу их, например, VC80.DebugCRT
(в данном случае VC80 == Visual Studio 2005), и если я найду эту строку в одной из этих библиотек, эта библиотека должна быть перекомпилирована с /MD
.
Если вы связываете динамические библиотеки, вы можете использовать инструмент под названием Dependency Walker для файлов .dll
вместо ручного поиска в файлах .lib
.
Если Dependency Walker показывает зависимость от одного из отладочных файлов DLL crt, например, MSVCP80D.dll
(обратите внимание на завершающий D), перекомпилируйте эту библиотеку, используя /MD
.