在Excel中使用DLL 由C++制成的VBA
Using DLL in ExcelVBA made from C++
我正在将一个函数从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);
}
阿德南.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
问题是我有一个错字。 我指的是"return_var"而不是"return_val"。 实际上,dll 函数引用正确返回了该值。
相关文章:
- 使用来自 Excel VBA 的 C++ dll 时"Bad DLL calling convention" - 如何解决?
- 从Excel VBA调用C++DLL只能从Visual Studio中的调试实例工作
- 如何使用 Win32 API 从 Excel VBA 中的非"Single-Threaded Apartment"线程调用 InternetGetProxyInfo
- 是否可以将 VBA 编程环境添加到我的C++应用程序?
- 如何在 VBA/Excel 中创建字符串数组并将其发送到C++ DLL,以便可以在 DLL 中循环访问它
- DLL函数在VBA环境中不起作用,但在Excel VBA中工作
- 从 VBA 中的 (c++ BSTR) 字符串中删除 chr(0)
- 将动态分配的数组从C DLL返回到VBA
- 将SafeArray变体从C DLL传递到VBA
- 如何从C DLL返回的指针中获得VBA中的整个矩阵
- 当通过访问中的VBA远程启动时,请写信给我的文档
- VBA 中的多个 DLL 调用
- (Mac)将字符串从VBA传递到Dylib-在C 函数中接收到的空字符串
- Calling an xll UDF from VBA
- 具有C DLL的Excel-VBA有时会崩溃
- 将字符串数组从C DLL返回到VBA(Excel)
- 传递从VBA到C++的范围
- 当我将字符串数组从 VBA 传递到 c++ 并将它们用作映射中的键时,为什么我无法从映射中检索数据(使用键)
- VBA 中的 Qt5 Dll,错误运行时错误 453
- VBA调用相同的C DLL返回不同的结果