C++でDLL作成とVBでDLL参照 | objective-cをちょい研究!ブログ

objective-cをちょい研究!ブログ

WILLCOMを卒業してiOS開発者に転身しました。。
コメント&トラックバック大歓迎です。

VBだと作りやすいんですが何かと制約が多いので、

C++でDLLを作成してVBでそのDLLを参照する方法のメモです。


1.C++でDLLプロジェクトを作成する。

テンプレート
 Visual C++ -> スマートデバイス -> Win32 スマートデバイスプロジェクトを選択


プロジェクト設定|アプリケーションの種類
 DLL(D)を選択


公開する関数宣言をhファイルに追加(例えばstdafx.hの最後)

#ifdef __cplusplus
extern "C" {
#endif
__declspec(dllexport) void fncTest(void); //VBから参照したい関数宣言
#ifdef __cplusplus
}
#endif

extern "C"
 C++だと同一関数名の識別のため変な関数名になってしまうので、そのままの関数名で公開。
__declspec(dllexport)
 DLLからエクスポートするための修飾子


cppファイルに追加

__declspec(dllexport) void fncTest(void)  //VBから参照したい関数
{
  return;
}

2.VBから作成したDLLを参照する。

  <DllImport("\Program Files\test\test.dll")> _
  Private Shared Sub fncTest()
  End Sub


  Sub subTest()
    fncTest()
  End Sub


ちなみに、C#から作成したDLLを参照する場合

  [DllImport("\\Program Files\\test\\test.dll")]
  private static extern void fncTest();


__declspec(dllexport)について
http://hp.vector.co.jp/authors/VA023539/tips/dll/001.htm

extern "C"について
http://1024x768.blog74.fc2.com/blog-entry-31.html