VS2010でC ++(ネイティブ)DLLを開発する場合、MSVCRT100.dllも展開する必要がありますか?

c++ visual-studio
VS2010でC ++(ネイティブ)DLLを開発する場合、MSVCRT100.dllも展開する必要がありますか?

MSVCRT100.dllの機能を使用していません(新しい機能があるかどうかさえ知りません)。

  2  0


ベストアンサー

まあ、あなたはそれを静的にリンクできるはずです。 .dllはかなり大きくなりますが、msvcrtは必要ありません。 これは、コード生成→ランタイムライブラリ(/ MTを選択)によって制御されます。

2


ほとんどのアプリケーションはC / C ++ランタイムを使用します。 まだ知らない方法でランタイムを使用している可能性があります…​ どこかで `fopen()`を呼び出しますか? 次に、それを使用します。

ただし、BarsMonsterが指摘したように、ランタイムに静的にリンクできます。 バイナリサイズは大きくなりますが、外部依存関係はありません。 実際、これは、インストーラーソフトウェアを使用してアプリケーションを展開したくない場合に選択する方法です。

特定のアプリケーションにバインドされておらず、何度も再利用できる外部ライブラリのようなものには、ほぼ間違いなく最良の選択です。 SDKでDLLを誰かにリリースする場合は、ランタイムへの静的および動的リンケージの両方にlibおよびdllを提供することをお勧めします。

ただし、静的リンケージには1つの重大な欠点があることに注意してください。ヒープメモリはDLLの境界を越えて共有されません。 メモリブロックは、最初に割り当てたモジュール(DLL)によって解放する必要があります。 この要件を満たせない場合は、静的リンケージを使用しないでください。 その場合、ランタイムでデプロイすることは避けられません。

2


VS2010を使用しても、古いバージョンのランタイムをターゲットにすることができます。 これはプロジェクトのプロパティで設定できます。これが画像です:

明らかに、ターゲットとするツールセットをインストールする必要があります。 +詳細については、http://blogs.msdn.com/vcblog/archive/2009/12/08/c-native-multi-targeting.aspx [this] VC ++チームのブログ投稿をご覧ください。

0


残念ながらそうです。 プラットフォーム(x86)または(x64)にVC10ランタイムが必要になります-ランタイム_may_が変化しても注意してください。

コアランタイムライブラリです。DependencyWalker(http://www.dependencywalker.com)を使用して、より多くの依存関係を確認できます。

または、代わりに試してみてください:-)

-2


タイトルとURLをコピーしました