将字符串数组从 VB6 传递到 COM 对象

Posted

技术标签:

【中文标题】将字符串数组从 VB6 传递到 COM 对象【英文标题】:Pass an array of strings from VB6 to a COM object 【发布时间】:2012-03-22 08:26:57 【问题描述】:

我正在使用 ATL 创建一个围绕 DLL 的 COM 包装器。对于某些函数,我需要传递一个字符串数组。我将如何设置 IDL,以便 VB6 中的智能感知将参数显示为“String()”,而不仅仅是“String”或“Variant()”?

【问题讨论】:

【参考方案1】:

你需要:

[in, out] SAFEARRAY(BSTR)* inout_asParam

【讨论】:

我就是这么想的。那么为什么我在使用时会出错:[id(2), helpstring("method StartupInitialization")] HRESULT StartupInitialization([in] LONG argc, [in] SAFEARRAY(BSTR)* argv, [in] SAFEARRAY(BSTR)* argE, [out,retval] IWorkArea** WA); error C2143: syntax error : missing ',' before '*' error C2059: syntax error : ')' error C2143: syntax error : missing ')' before ';'

以上是关于将字符串数组从 VB6 传递到 COM 对象的主要内容,如果未能解决你的问题,请参考以下文章

无法将字符串从VBA(Excel)传递到我的COM对象

通过互操作将字符串数组从 C# 传递到 C++

我们如何将数组从java传递到oracle中的存储过程

如何从 ATL activex 控件将错误字符串和错误代码返回到 VB6?

JSON对象

将字节数组从 C 传递到 Lua