Last Updated 2011/05/11
Programming Tips Visual C++ DLL  索 引 
VBから呼び出し可能なDLL宣言
2002/04/03

VC で作成した DLL が VB から使用可能かを調査する.
VC で複数の宣言により DLL を作成する.

DLL    void Func(LPSTR, LPSTR) という関数をエクスポート
       VC++5.0
VB     P-Code コンパイル
       VB5.0

VCでの関数宣言方法 名前修飾の結果 VBからの呼び出し
__declspec(dllexport)のみ ?Func@@YAXPAD0@Z NG
extern "C" + __declspec(dllexport) Func NG(実行時エラー49)
__declspec(dllexport) + DEF Func NG(実行時エラー49)
extern "C" + __declspec(dllexport) + DEF Func NG(実行時エラー49)
extern "C" + __declspec(dllexport) + DEF + WINAPI Func OK
extern "C" + __declspec(dllexport) + WINAPI _Func@8 NG
DEF + WINAPI Func OK
extern "C" + DEF + WINAPI Func OK
extern "C" + DEF Func NG(実行時エラー49)
DEF Func NG(実行時エラー49)

※「DEF」は DEF ファイル内で EXPORTS 文の記述をしてるという意味

一番確実なのは,オーソドックスと思われる
  extern "C" + DEF + WINAPI
の組み合わせである.
関数の宣言は、extern "C" 及び WINAPI を付けて,エクスポートはDEFファイルで行う.


VC++ 側は
  extern "C" + dllexport + WINAPI
VB 側は
  alias
という方法も可能である.
しかし,VB 以外からの使用を考えると DEF ファイルを使用した方が後々楽である.


参照
VBから呼び出すDLLの作成
VC4以降での32bit DLLの作り方
DEFファイル
前後のTips
VBから呼び出し可能なDLL宣言

DSS ProgrammingTipsCGI Ver2.02