ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:tk516ncb DLL作成後VBAで使用しようとするとエラーが出ます
困り度:
  • すぐに回答を!
エントリxxがDLLファイルyy内に見つかりません。とエラーが出ます。
複雑な処理をCでやろうとして基本的な箱を作ろうとしたのですがうまくいきません。どなたか教えていただけないでしょうか?

C側

#define DLL_EXPORT __declspec(dllexport)
extern "C" {
DLL_EXPORT void kinou(int a);
}

void kinou(int a)
{
//処理
}

呼び出し規約はstdcallしています。

VBA側
Declare Sub kinou Lib ".\test.dll[
(フルリンクしています)]
" (ByVal a As Integer)
Sub test()
Call tasu(10)

End Sub
質問投稿日時:08/05/03 06:44
質問番号:3993918

回答

 

回答者:redfox63 DEFファイルでエクスポート名を変更していないのであれば
エクスポートされた関数は _関数名@引数のバイト数 といった命名になります

DLL_EXPORT void kinou( int a );の宣言なら

Declare Sub _kinou@4 lib "dllのPath" ( ByVal a as Long )
または Aliasを使って 本来の関数名を指示します
Declare Sub kinou lib "dllのPath" _
  Alias "_kinou@4" ( ByVal a as Long )
といった記述です
種類:回答
どんな人:専門家
自信:自信あり
回答日時:08/05/03 06:59
回答番号:No.1
この回答への補足この回答に補足をつける(質問者のみ)
この回答へのお礼この回答にお礼をつける(質問者のみ)