VC++でDLLを簡単につくる方法のまとめ。
基本、.NET系(VB.NET とか C# とか)で作るわけですが、たまに Win32 ネイティブ DLL を掴む必要があり、ただそういう DLL に限ってデバイスアクセス系だったりして、結局ターゲット機材が手元にないと使えない、みたいなことになって、テストが困るのでスタブが作りたいなあ。と思った時のために。
1.「新しいプロジェクト」で「Visual C++」の「Win32 コンソールアプリケーション」を選択。
「名前」にプロジェクト名(例:dllTest)を入力し、「OK」を押下。
2.「Win32 アプリケーション ウィザードへようこそ」画面で「次へ」。
「アプリケーションの設定」を「DLL」に、
「追加のオプション」を「空のプロジェクト」に選択し、「完了」。
3.「プロジェクト」→「新しい項目の追加」で、「C++ファイル(.cpp)」を選択。
「名前」にファイル名(例:dllTest.cpp)を入力し、「追加」。
4.コードを書く。
DllMain() はお約束。呪文扱いで。
func() が今回作りたい関数。
__stdcall は必須。
5.「プロジェクト」→「新しい項目の追加」で、「モジュール定義 ファイル(.def)」を選択。
「名前」にファイル名(例:dllTest.def)を入力し、「追加」。
defファイルを追加すると、DLLのプロジェクトのプロパティの、
「構成プロパティ」→「リンカー」→「入力」の「モジュール定義ファイル」
に、追加した def ファイルが設定されます。
6.コードを書く。
公開したい関数名を Exports 以下に列挙 (例:func)
7.ビルド
8.終了
ちなみに、VB側からこの DLL 関数を呼ぶための定義は以下。
Public Module dllTest <System.Runtime.InteropServices.DllImport("dllTest.dll")> _ Public Function func(ByVal i As Integer) As Integer ' ここにはなにも書かない End Function End Module