VBA对c++的dll函数调用,怎么有缺参数

VBA to C++ dll function call, how to have missing argoument

本文关键字:参数 函数调用 c++ dll VBA      更新时间:2023-10-16

我有一个函数,我用c++编译为dll。我通过vba访问它,没有问题,一切都很好。

如果用户没有指定其值,我希望将其中一个参数设置为特定的值。我不知道该怎么做,

我试过了__stdcall h2e_q_DLL (double &T,双&气,双&;D1,双&N,双&Df,双&Qa,双&Up =1.0)

最后值"up"被设置为1.0但是…

我得到这个:1>c:usersalexdocumentsc++h2e_projectv2testmain.cpp(8):错误C2440: '默认参数':无法从'double'转换为'double &'

我试着寻找一个解决方案,但没有找到任何东西,有人有任何建议吗?

谢谢!

恐怕不容易。可选参数必须是一个VARIANT。有关此结构的详细信息,请参阅Microsoft文档。

在C/c++端,检查变量结构的vt字段,如果没有传递值,该字段将被设置为缺失的类型。此时,您可以执行默认逻辑。

在Vba端,将参数声明为可选的byref变量。

你可以在这里提供一个默认值;我在火车上,所以不能检查。

从变量中提取数据会很有趣;在提取数据之前,使用vt标志检查类型。