我正在从DLL中将函数导入Excel VBA。该DLL是在Microsoft Visual C ++中创建的(默认示例的大部分未修改版本)。 VB中函数调用的返回值不正确,但我不知道原因。
我看到的值是0,但我希望得到的值为42。
我发现了一个几乎相同的问题here。我尝试了他们的实验,我在电子表格中调用了该函数。我看到了相同的行为,电子表格返回是正确的,并且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
答案 0 :(得分:0)
问题是我有一个错字。我引用了'return_var'而不是'return_val'。实际上,dll函数引用正确地返回了值。