3

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

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

VS2010 界面:

/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:precise /Zc:wchar_t >/Zc:forScope /Fp"Release\Temp \ourProject.pch" /Fa"Release\Temp\" /Fo"Release\Temp\" >/Fd"Release\Temp\vc100.pdb" /Gd /analyze- /errorReport:queue

MSBuild.exe:

MSBuild.exe "%WORKSPACE%\OurProject.vcxproj" /t:重建 /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:precise /Zc:wchar_t /Zc:forScope > /Fo"Release\Temp\" /Fd"Release\Temp\vc100.pdb" /Gd /TP /analyze- /errorReport :队列

我看过一些关于VS2010 静态链接的帖子没有按预期运行,但是我的项目构建和链接都很好。直到运行时才找不到所需的 DLL。安装 VS2010 运行时或随运行时一起提供是我们试图避免的选项。

谢谢!

4

0 回答 0