What is it, naokirin?

dllの作成と使用

最近、ガウディ本は内容をかつかつ理解している感じで、あんまりブログに書くようなことが思い浮かばず停止中。

本当は書きたいんだけどなあ・・・。



今回は復習がてら、dll作成とそのインポートの方法をめもめも。


環境はWindowsVisual Studio。(もちろん、dll作成用のプロジェクトを作っていることを仮定)

まずdllの作成。

1.dllにするコードを書く。
2.エクスポートする関数(もしくはクラス)を"__declspec(dllexport)"で宣言する。
3.コンパイルする。


そしてdll内の関数(もしくはクラス)の使用。

1."#pragma comment(lib, "libファイル名")"を宣言。
2."__declspec(dllimport)"をつけてdll内のエクスポートされた関数(もしくはクラス)を呼び出す。

くらいかな。.defでやる方法もあった気がするけど気にしない・・・と言っても自分が気になるので書くことにしよう。



.defファイルでの作成方法。

1.dllにするコードをry)
2.defファイルで次のように記述を行う。

LIBRARY      "dll名"
EXPORTS           関数名  @1
                  関数名  @2
                  …

EXPORTSに記述する関数名の後ろについている"@"は関数名毎に一意の番号をつけなければいけません。

インポート方法は前と同じなので略。


上で書いてあるのは暗黙的リンクによる作成方法(libファイルを使う方法)。
明示的な場合の利点はどちらかと言えば「人が作ったdllを使うor不特定多数の人が使う」ようなdllを作る場合がほとんどなので、今回は省略。

あ、言い忘れそうだったけれど、dllのインポート時に気をつけることが一つだけあるので最後に。
C++の場合はインポート時に関数をextern "C"で読み込まないと大変なことに・・・。



なかなか使わないので毎度毎度使うときになって忘れていることの多いdllの作成と使用。
というわけでちょっとメモ書き。

あってるような、間違ってるような・・・。