MSBuild.exe不尊重/ MT编译器标志?

时间:2012-11-27 01:03:30

标签: c++ visual-studio-2010 msbuild

我很惊讶地发现,在将我们的构建系统从VS2008切换到VS2010后,我们的应用程序现在抱怨MSVCR100.dll在运行时丢失了。我检查了项目的构建选项,我们为运行时库指定了多线程(/ MT)。但是,当我们使用GUI构建时,DLL是静态链接的,并且不会出现错误。只有从命令行使用MSBuild.exe构建时才会发生错误。

我比较了命令行,它们几乎相同,都指定/ MT:

VS2010 GUI:

  

/ nologo / W3 / WX- / O2 / Oi / Oy- / GL / D“_CRT_SECURE_NO_WARNINGS”/ D“GSL_DLL”/ D“WIN32”/ D&gt;“_ WINDOWS”/ D“_USRDLL”/ D“_VC80_UPGRADE = 0x0710“/ D”__STDC_CONSTANT_MACROS“/ D&gt;”_ WINDLL“/ D”_UNICODE“/ D”UNICODE“/ Gm- / EHsc / MT / GS / Gy / fp:precise / Zc:wchar_t&gt; / Zc:forScope /Fp"Release\Temp\ourProject.pch“/ Fa”Release \ Temp \“/ Fo”Release \ Temp \“&gt; / Fd”Release \ Temp \ vc100.pdb“/ Gd / analyze- / errorReport:queue < / p>

MSBuild.exe:

MSBuild.exe“%WORKSPACE%\ OurProject.vcxproj”/ t:Rebuild / p:Configuration = Release

  

/ nologo / W3 / WX- / O2 / Oi / Oy- / GL / D _CRT_SECURE_NO_WARNINGS / D GSL_DLL / D WIN32 / D _WINDOWS / D _USRDLL / D _VC80_UPGRADE = 0x0710 / D __STDC_CONSTANT_MACROS / D _WINDLL / D _UNICODE / D UNICODE / Gm- / EHsc / MT / GS / Gy / fp:exact / Zc:wchar_t / Zc:forScope&gt; / Fo“Release \ Temp \”/ Fd"Release\Temp\vc100.pdb“/ Gd / TP / analyze- / errorReport:queue

我看过一些关于VS2010 static linking not behaving as expected的帖子,但是我的项目构建和链接都很好。它直到运行时才能找到所需的DLL。安装VS2010运行时或随运行时一起发货是我们试图避免的选项。

谢谢!

0 个答案:

没有答案