Seasons.NET

ちょっとした技術ブログです

DLLを動的に読み込む時の注意

susieのプラグインを作っていて、そういやLoadLibraryって
使って事なかったなぁ〜と思い、簡単なサンプルを作ってみたところ、
ホストではうごくのに、VirtualPC 2007のWindows 2000 SP4では、
うまく動かなかった。

デバッグするのにVCを入れるのもあれだったので、
Dependency Walkerを入れてデバッグ
すると原因発覚。


アプリの構成
LoadLibrarySample01.exe側:MTd
sample.dll側:MDd


でそれぞれビルド。
んで、例のツールで読み込んで実行。するとこうなる。


画像にメモったから解説ははぶく。


んで、
LoadLibrarySample01.exe側:MTd
sample.dll側:MTd
これで実行。
うまく動く。


基本ランタイムがそれぞれ同梱されるので、exeとdllのサイズが非常にでかくなるのがつらい。。。
かといって、皆最新のランタイムが入っているとも限らないので、社内といえどもあなどれん。
つーかVS2008で作ったりしたらどうするよ俺・・・orz
まぁ、VS2008は、C#しか使わないと思うけど。当面。

Dependency Walkerの使い方はここ参照↓
Dependency Walker (depends.exe) の使用方法