我正在将一个函数从 DLL 导入 Excel VBA。该 DLL 是在 Microsoft Visual C++ 中创建的(默认示例的大部分未修改版本)。VB中函数调用的返回值不正确,不知道是什么原因。
我看到的值为 0,但我希望得到的值为 42。
我在这里发现了一个几乎相同的问题。我尝试了他们的实验,在那里我从电子表格中调用了该函数。我看到了同样的行为,电子表格返回是正确的,而 vba 代码中的返回不是。
C++ 代码如下所示:
addnum.h
#ifdef ADDNUM_EXPORTS
#define ADDNUM_API __declspec(dllexport)
#else
#define ADDNUM_API __declspec(dllimport)
#endif
extern "C" {
ADDNUM_API int fnaddnum(void);
}
addnum.cpp
#include "stdafx.h"
#include "addnum.h
ADDNUM_API int fnaddnum(void)
{
return 42;
}
VB 代码如下所示:
Declare Function fnaddnum _
Lib " ... path to dll ... " _
() As Integer
Sub use_dll()
Dim return_val As Integer
return_val = fnaddnum()
MsgBox ("Value is" & Str(return_var))
End Sub