2012-02-16 17 views
2

「スタティックライブラリでMFCを使用する」オプションを使用してMFCアプリケーションを作成しました。スタティックライブラリでMFCを使用

Installshieldを使用してアプリケーション用のインストールを作成しています。私はinstallshieldに追加する必要があります依存ファイルまたは "マージモジュール"は何ですか?

"Microsoft C++ランタイムライブラリ"または "Microsoft Visual C++ MFC"マージモジュールを追加する必要がありますか?

答えて

1

少なくともメモリが機能している場合は、いいえ。静的ライブラリでMFCを使用する場合は、静的に標準ライブラリにもリンクする必要があります。他のDLLに他の依存関係を追加していない限り、スタンドアロンの実行可能ファイルが必要です。

好きな場合は、確かにdependency walkerで確認できます。

+0

ありがとうございます。私は自分のアプリケーションでMSXMLを使用しています。そこで、MSXML dllをinstallshieldに追加しました。私は静的なMFCライブラリを使用する場合は、 "C + +ランタイムライブラリ"マージモジュールを追加するかどうか不明でした。私は依存性ウォーカーを試してみる。 –

6

静的リンクとは、foo.libがリンカーフェーズでmyapp.exeに埋め込まれたことを意味します。 foo.dllへの依存は存在せず、再配布する必要はありません。また、静的リンクは展開を容易にしますが、foo.lib/foo.dll(この場合はMFC)でエクスプロイトが検出された場合、Microsoftはバージョンを更新してアプリケーションにパッチを適用できないため、実際にセキュリティの脆弱性とみなされます。 WinSXSキャッシュに保存します。ビルドマシンに最新のredistを組み込み、再構築して再デプロイするまでは、あなた次第です。

サポートする最も古いOSを表す基本スナップショットで仮想マシンを作成し、そこでインストーラをテストすることを強くお勧めします。これは、Dependency Walker、ILDasm/.NET Reflactor、ProcessMonなどのツールを使用して解決できる欠落している依存関係を特定するのに役立ちます。

+0

あなたの明確な説明をありがとう。これは私に静的リンクMfcのメリットとデメリットを与えます。 –

関連する問題