読者です 読者をやめる 読者になる 読者になる

DLLまとめ 01 DLLの概要、利点、作成

DLLの簡単なまとめです。
DLLの概要、利点、作成について


DLLの概要

DLLは、Dynamic Link Libraryの略称で、その名の通り動的にリンクされるライブラリです。

DLLの利点

DLLを複数のプロセスで共有できるため、メモリ領域とディスク領域を節約できます。
DLLを更新することで、再コンパイルや再リンクをすることなくプログラムの挙動を変更できます。


DLLの作成

まずはDLLを作成するためのプロジェクトを作成します。win32プロジェクトを選択し、アプリケーションの種類はDLLにします。
空のプロジェクトを選択しないとDLLMainの雛形などが作成されます。不要なら空のプロジェクトを選択します。

今回は空のプロジェクトを選択し、関数をDLLからエクスポートする場合を考えます。
ヘッダファイルには下のように記述をします。

/*******************************************************************
    myDLL.h
*******************************************************************/
#define EXPORT extern "C" __declspec(dllexport)
EXPORT void __stdcall test();

実装は下のようにします。

/*******************************************************************
    myDLL.cpp
*******************************************************************/
#include <iostream>
using namespace std;

#include "myDLL.h"


EXPORT void __stdcall test()
{
	cout << "Hello World" << endl;
}

"Hello World"と出力するだけの関数です。これをビルドすると、DLLとlibファイルが作成されます。


extern "C"は、名前マングルを避けるために記述します。
__declspec(dllexport)はエクスポートしたい関数、変数、クラスに指定します。
__declspec(dllexport)が指定されたシンボルは、libファイルとDLLのエクスポートされるシンボルのリストに組み込まれます。Visual Studioコマンドプロンプトからdumpbin.exeを呼び出すことで確認できます。

dumpbin.exe myDLL.dll -exports
dumpbin.exe myDLL.lib -exports

のように入力します。

参考書籍

ADVANCED WINDOWS 第5版 下 (マイクロソフト公式解説書)

ADVANCED WINDOWS 第5版 下 (マイクロソフト公式解説書)