从命令行和msvcr90.dll编译Visual c + +程序

时间:2009-12-04 17:32:37

标签: visual-c++ dll windows

当我从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传递给编译器,所以我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

我知道这不是你想要的,但你可以从命令行调用ide构建,它应该给你相同的输出:

devenv solution.sln /build Release

这将构建solution.sln的Release配置。 (devenv /?在命令行上获取更多信息)。