3

VBAプロジェクトでDLL関数を呼び出そうとしていますが、次のエラーメッセージが表示され続けます。

Run-time error '453': Can't find DLL entry point "CheckStatus" in "Power.dll"

C++ファイルでのDLLの定義は次のとおりです。

#define CLASS_DECLSPEC extern "C" __declspec(dllexport)

CLASS_DECLSPEC int __stdcall CheckStatus();

そして、これが私がそれを宣言してVBAで呼び出す方法です:

Public Declare Function CheckStatus Lib "Power.DLL" () As Long

Dim test As Long
test = CheckStatus

そして、実行すると、前述のエラーメッセージが表示されました。

誰かがこれを修正する方法を知っていますか?ありがとう。

4

2 に答える 2

4

これは、名前のマングリングと関係があります(extern "C")と関係があります。
DLLに実際にどのエクスポートがあるかを見てください。推測はまたはのいずれ_CheckStatus_CheckStatus@0です。
名前をそのままにするには、.defプロジェクトに次の内容のファイルを作成します。

EXPORTS
    CheckStatus=CheckStatus
于 2012-12-20T21:43:40.280 に答える
1

このMSDNの記事を使用して、関数を宣言する次の方法を試してみます。

Public Declare Function CheckStatus Lib "Power.DLL" Alias "_CheckStatus@0" () As Long
于 2012-12-20T22:24:03.287 に答える