2009-12-04 69 views
1

當我從IDE內部編譯我的Visual C++ 2008 express程序並在另一臺計算機上重新分發時,它啓動正常,沒有任何dll依賴關係,我沒有考慮過。當我從開始菜單下的visual C++ 2008命令行編譯相同的程序並將其重新分發給另一臺計算機時,它在啓動時會查找msvcr90.dll。從命令行和msvcr90.dll編譯Visual C++程序

這裏是它是如何從命令行編譯

CL /Fomain.obj/C的main.cpp/NOLOGO -O2 -DNDEBUG/MD/ID:(包括目錄列表) 鏈路/ NOLOGO /子系統:WINDOWS/ENTRY:mainCRTStartup /OUT:Build\myprogram.ex E/LIBPATH:d:\庫(庫列表)

,這裏是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傳遞給編譯器,所以我不知道該怎麼做。

回答

0

我知道這是不是你在尋找什麼,但你可以調用IDE構建以命令行形式,它應該給你同樣的輸出:

devenv solution.sln /build Release 

這將建立解決方案的發佈配置的.sln。 (有關更多信息,請參閱命令行上的devenv /?)。

+0

好吧,這本身就是有用的信息,但我使用Scons來創建多平臺構建。我可以使用Scons來調用devenv,但是每次向Scons文件添加一個源文件時,我都必須將一個源文件添加到visual C++項目中。理想情況下,我希望能夠將正確的參數傳遞給編譯器和鏈接器。 –

+0

我想我的問題是你的主要開發環境是IDE。它發出的聲音並非如此。仍然可能不理想,但也許你的構建工具可以生成項目文件? – Dolphin