当我从IDE内部编译我的Visual c ++ 2008 express程序并在另一台计算机上重新分发它时,它启动正常,没有任何我没有考虑的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传递给编译器,所以我不知道该怎么做。
答案 0 :(得分:0)
我知道这不是你想要的,但你可以从命令行调用ide构建,它应该给你相同的输出:
devenv solution.sln /build Release
这将构建solution.sln的Release配置。 (devenv /?在命令行上获取更多信息)。