我一直在尝试在我的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
然后当我运行它时收到上述错误消息。
有谁知道如何解决这个问题?感谢。
答案 0 :(得分:4)
这与名称修改有关(即使使用extern "C"
)
看看DLL中真正的导出是什么,猜测可能是_CheckStatus
或_CheckStatus@0
要强制名称保持原样,请在项目中使用以下内容创建.def
文件:
EXPORTS
CheckStatus=CheckStatus
答案 1 :(得分:1)
使用this MSDN文章,我会尝试这种声明函数的方法:
Public Declare Function CheckStatus Lib "Power.DLL" Alias "_CheckStatus@0" () As Long