FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Visual C++ 2005 でWin32アプリプロジェクトを作った場合、Cランタイムがstatic linkにならない件

Visual C++ 2005 において、Win32アプリケーションプロジェクトを作る必要があった。

可能な限り外部のライブラリには依存したくなかったので、生のWin32APIとCランタイムライブラリだけしか使わないプロジェクトとしてプロジェクトを作成した。

このプロジェクトのプロパティ設定を確認して、「全般」タブの「MFCの使用」欄が
 「標準 Windows ライブラリを使用する」
になっていることを確認した。

ところが、このプロジェクト設定だと、
  MSVCR80.dll
  MSVCP80.dll
が、リンクされてしまう!! ということが判明した。

Cランタイムライブラリを static link する設定が見当たらない。


そこで、一旦、
 「スタティックライブラリでMFCを使用する」
に設定して(MFCは使っていないにも関わらず)、プロジェクトを保存し、その後でもう一度
 「標準 Windows ライブラリを使用する」
にすると、Cランタイムがスタティックリンクされることが分かった。


プロジェクトファイル(*.vcproj)を見てみると

<Tool
 Name="VCCLCompilerTool"
 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
 RuntimeLibrary="2"
 UsePrecompiledHeader="2"
 WarningLevel="3"
 Detect64BitPortabilityProblems="true"
 DebugInformationFormat="3"
/>

の部分の、
 RuntimeLibrary="2"

 RuntimeLibrary="0"
になっていた。
これが、スタティックリンクのための設定のようである。

GUIで素直に設定できないのが何故なのか不明なのだが。
スポンサーサイト
コメント
コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。