我在让简单的 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/