Когда я компилирую свою программу Visual C ++ 2008 Express из среды IDE и перераспределяю ее на другом компьютере, она запускается нормально без каких-либо зависимостей dll, которые я не учел. Когда я компилирую ту же программу из командной строки visual c ++ 2008 в меню «Пуск» и перераспределяю ее на другой компьютер, при запуске она ищет msvcr90.dll.
Вот как это скомпилировано из командной строки
cl /Fomain.obj / c main.cpp / nologo -O2 -DNDEBUG / MD / ID: (список включаемых каталогов)
link / nologo / SUBSYSTEM: WINDOWS / ENTRY: mainCRTStartup /OUT:Build\myprogram.ex
e / LIBPATH: D: \ libs (список библиотек)
и вот как IDE создает его на основе соответствующих частей журнала сборки.
/O2 /Oi /GL /I clude" /I (list of includes) /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MD /Gy /Yu"stdafx.h" /Fp"Release\myprogram" /Fo"Release\\" /Fd"Release\vc90.pdb" /W3 /c /Zi /TP /wd4250 /vd2
Creating command line "cl.exe @d:\myprogram\Release\RSP00000118003188.rsp /nologo /errorReport:prompt"
/OUT:"D:\myprgram\Release\myprgram.exe" /INCREMENTAL:NO /LIBPATH:"d:\gtkmm\lib" /MANIFEST /MANIFESTFILE:"Release\myprogam.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"d:\myprogram\Release\myprogram.pdb" /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF /LTCG /ENTRY:"mainCRTStartup" /DYNAMICBASE /NXCOMPAT /MACHINE:X86 (list of libraries)
Creating command line "link.exe @d:\myprogram\Release\RSP00000218003188.rsp /NOLOGO /ERRORREPORT:PROMPT"
/outputresource:"..\Release\myprogram.exe;#1" /manifest
.\Release\myprogram.exe.intermediate.manifest
Creating command line "mt.exe @d:\myprogram\Release\RSP00000318003188.rsp /nologo"
Я хотел бы иметь возможность скомпилировать его из командной строки и не заставлять его искать такую более позднюю версию библиотеки DLL времени выполнения, как, похоже, не скомпилированная из IDE версия. Обе версии передают / MD компилятору, поэтому я не уверен, что делать.