c++ - Visual Studio 2019 C++ dll Excel VBA 插件问题

标签 c++ excel visual-studio dll

我在让简单的 Excel VBA 插件正常工作时遇到问题。我正在使用 https://www.vitoshacademy.com/c-adding-c-function-to-vbaexcel/ 的简单示例开始,但连这个简单的例子都无法工作。 SimpleMath.cpp、defMe.def 和 VBA 代码如下。我已添加到 SimpleMath.cpp 属性:链接器:输入:模块定义文件:defMe.def。在 VS2019 中,C++ 代码成功编译并按预期在 Debug 文件夹中生成 SimpleMath.dll。但是我尝试了很多替代方法,但无法让 Excel 中的 VBA 代码正常工作。由于该示例的许多 Web 变体看起来很旧,我想知道 VS2019/C++ 是否需要旧示例中未涵盖的内容?

在 Excel 中,我得到“运行时错误 '453': Can't Fine DLL entry point SimpleMath in c:\VS19Projects\CPP\SimpleMath\Debug\SimpleMath.dll”。

我使用了 dumpbin/HEADERS SimpleMath.dll 来尝试查看 dll 入口点。不返回入口点。这似乎表明我对 *.def 的使用不正确。

指导和建议将不胜感激。

//SimpleMath.cpp
int __stdcall SimpleMath(int & x)
{
    int result = 0;
    for (int a = 0; a <= x; a++) {
        result += a;
    }
    return result;
}
;defMe.def C++ code
LIBRARY "SimpleMath"
EXPORTS
SimpleMath
// VBA Code in Excel Module
Declare Function SimpleMath Lib "C:\VS2019Projects\SimpleMath\Debug\SimpleMath.dll" (ByRef x As        Long) As Long
Sub TestMe()
    Dim n As Long: n = 5
    dim result as long
    result = SimpleMath(n)
End Sub

最佳答案

我仍然没有我的 DLL 与 Excel 一起工作。我进行了深思熟虑的研究,以学习和调试并使用 Excel。

我尝试过使用 C++ *.def 和 VBA Declare 的 EXPORTS 变体。没有成功。

然后我发现了 MSFT Mixed Mode Debugging Tutorial .我能够让这个 C++ DLL/C# 示例应用程序在 VS2019 中快速运行。我无法使其适应 Excel VBA。当然,我对“ native 和托管 C++ 代码”的理解可能不够充分。

我的项目目标是最终(并且希望)成功地创建一个高性能 C++ DLL,以加速 Excel 中的大型二维数组计算。我有一个性能较低的 C# COM dll 工作,但需要更高性能的 C++ DLL。但我什至无法让这个更简单的 C++ DLL 工作。

实现这些目标的指导和建议将不胜感激。

关于c++ - Visual Studio 2019 C++ dll Excel VBA 插件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60459625/

相关文章:

vba - 对象所需的错误,数组

database - 要读取 Excel,我们可以使用 Spring 批处理吗?

visual-studio - 使用 Visual Studio : switch from VisualSVN to Ankh? 的源代码管理

c++ - 找不到指针类型的运算符 <

c++ - 带有 const char* 变量的 printf 问题

c++ - fread正在读取文件中的垃圾

c# - 有没有办法在 VS 调试器中自定义自定义对象的工具提示?

c++ - 如何将不可复制的 std::function 存储到容器中?

excel - 在此之前确定VSTO 4中的Office版本。应用程序已设置

c++ - 为什么缓冲区获得垃圾值?