Visual StudioでDLLを作る&使うサンプル


このエントリーをはてなブックマークに追加

DLLの作り方と、DLLを呼び出すプログラムのサンプルをgithubに上げました。Visual Studio 2013 Expressがあればビルドできます。

minus9d/DllSample

以下の書籍を全面的に参考にしました。

以下、解説です。

全体像

DLLを作る行為と、DLLを利用するプログラムを作る行為とが混乱しがちなので、自分の理解を図にしました。

f:id:minus9d:20140519225607p:plain

DLLの作成

図の上段は、DLLの作成を表しています。

DllMain.cppは、DLLのエントリポイントを記述したファイルです。Windowsのお作法に従って、DLLがプロセスによってロードされたりアンロードされたりするときの処理などを記述します。今回のような単純な例においては、ほぼ何も書かなくても大丈夫なようです。

BasicMath.hとBasicMath.cppには、DLLが提供する関数の宣言と実装をそれぞれ記述しています。関数の前に_declspec(dllexport)をつけるのがお作法のようです。

ビルドすると、DLLの他に副産物としてライブラリファイルが生成されます。

DLLの利用その1:ロード時のリンク

図の中段は、DLLを利用するプログラムの作り方その1です。この方法では、先ほど生成されたライブラリファイルをビルド時に参照して、このプログラムがどのDLLを参照するかを実行ファイルに埋め込んでしまいます。自由度は低いですがプログラミングは簡単です。

DLLの利用その2:実行時のリンク

図の下段は、DLLを利用するプログラムの作り方その2です。この方法では、どのDLLの、どの関数を利用するかを実行時に決定します。利用できるDLLに応じて処理を変えることなどが可能になります。