3

ビルド システムを 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 >"_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:キュー

MSBuild.exe:

MSBuild.exe "%WORKSPACE%\OurProject.vcxproj" /t:再構築 /p:構成=リリース

/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:正確 /Zc:wchar_t /Zc:forScope > /Fd"Release\Temp\" /Fd"Release\Temp\vc100.pdb" /Gd /TP /analyze- /errorReport :列

VS2010 の静的リンクが期待どおりに動作しないという投稿を見たことがありますが、プロジェクトのビルドとリンクは問題なく動作します。必要な DLL が見つからないのは、実行時までではありません。VS2010 ランタイムをインストールするか、ランタイムと共に出荷することは、避けようとしているオプションです。

ありがとう!

4

0 に答える 0