街中で見かけて「グッときた人」の思い出

エントリ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

A 回答 (1件)

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 )
といった記述です
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!