0

我正在将一个函数从 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
4

1 回答 1

0

问题是我有一个错字。我引用的是“return_var”而不是“return_val”。实际上,dll 函数引用正确地返回了值。

于 2013-10-18T22:28:04.490 回答