[VC++] DLLの簡単なつくり方 (一部邪道)

2011年3月17日

 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





カテゴリー: Program, Visual C++

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org