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 回答