Lorsque je compile mon programme Visual c++ 2008 express depuis l'IDE et que je le redistribue sur un autre ordinateur, il démarre correctement sans aucune dépendance de dll que je n'ai pas prise en compte. Lorsque je compile le même programme à partir de la ligne de commande de Visual C++ 2008 sous le menu Démarrer et que je le redistribue sur l'autre ordinateur, il recherche msvcr90.dll au démarrage.
Voici comment il est compilé à partir de la ligne de commande
cl /Fomain.obj /c main.cpp /nologo -O2 -DNDEBUG /MD /ID :(liste des répertoires d'inclusion) link /nologo /SUBSYSTEM:Windows /ENTRY:mainCRTStartup /OUT:Build \myprogram.ex e /LIBPATH : D:\libs (liste des bibliothèques)
et voici comment l'IDE le construit en se basant sur les parties pertinentes du journal de construction.
/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"
J'aimerais pouvoir le compiler à partir de la ligne de commande et ne pas avoir à rechercher une version si tardive de la dll d'exécution, comme la version compilée à partir de l'IDE semble ne pas le faire. Les deux versions passent /MD au compilateur, donc je ne sais pas trop quoi faire.