在Excel VBA中使用DLL制作的C ++

时间:2013-10-18 20:56:54

标签: c++ visual-studio-2010 excel-vba dll vba

我正在从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

1 个答案:

答案 0 :(得分:0)

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