Excel VBA:"运行时错误'49':错误的DLL调用约定"调用C++ DLL

wgr*_*ant 5 c++ dll excel vba excel-vba

我试图从Excel-VBA调用C++ DLL.

我知道DLL函数正在执行,因为我插入了fputs()记录调用以跟踪执行,并且标记显示在我的日志文件中.问题是,每当DLL函数返回时,我得到错误49.

这是VBA中的声明:

Private Declare Function InitMCR Lib "MCRBoilerplate.dll" Alias "?initMCR@@YGXXZ" ()
Run Code Online (Sandbox Code Playgroud)

这是C++中的声明

__declspec(dllexport) void __stdcall initMCR() { ... }
Run Code Online (Sandbox Code Playgroud)

为什么我得到此错误49行为,即使DLL调用似乎工作?

πάν*_*ῥεῖ 2

在VBA中,返回的函数void需要声明为Sub而不是Function

所以VBA中的声明应该是:

Private Declare Sub InitMCR Lib "MCRBoilerplate.dll" Alias "?initMCR@@YGXXZ" ()
Run Code Online (Sandbox Code Playgroud)

请参阅有关 VBA Declare 语句的 MSDN 页面