VBA到C ++的dll函数调用,如何有缺少的参数

时间:2013-05-17 16:40:25

标签: c++ function vba dll

我有用C ++编译为dll的函数。我通过vba访问它没有问题一切正常。

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

我试过了 double __stdcall h2e_q_DLL(double& t,double& qi,double& d1,double& n,double& df,double& qa,double& up = 1.0)

最后一个值" up"设置为1.0但是......

我得到这个:1> c:\ users \ alex \ documents \ c ++ \ h2e_project \ v2 \ test \ main.cpp(8):错误C2440:'默认参数' :无法转换为' double'到'加倍&'

我试图寻找解决方案,但找不到任何东西,有人有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

在C / C ++方面,检查变体结构的vt字段,如果尚未传递值,将将其设置为缺失类型。此时你可以做你的默认逻辑。

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

您可以在此处提供默认值;我在火车上,所以无法检查。

您可以从变体中提取数据;在提取数据之前使用vt标志检查类型。