2

我有以下 IDL,可以很好地将字符串值从 JS 传递到 C++。JS 代码将一个字符串值传递给 c++/COM 对象。

[id(1), helpstring("method DoSomething")] HRESULT DoSomething([in] BSTR otlToken);

我现在需要添加另一种方法来将字符串返回给 javascript 调用者。我在 IDL 中添加了以下内容:

[id(3), helpstring("method GetValue")]  HRESULT GetValue([out] BSTR *nicknames);

在 JS 方面工作的开发人员说,他会收到一条关于参数数量错误和其他事情的消息,这取决于他是尝试调用该方法还是将其作为属性访问。

JS 是否需要通过引用调用才能获得此信息,还是我必须将一个 BSTR* 参数作为 [in,out] 传递?

我怎样才能让它工作?(从 C++/IDL 获取字符串值到 JS 调用者?

IDL 应该是什么样子,JS 代码应该是什么样子?

4

1 回答 1

2

Javascript 本身并不知道如何处理通过参数返回的值。您必须明确声明哪个参数是返回值,否则 COM 将简单地返回 HRESULT。您可以使用以下方法执行此操作。

[id(3), helpstring("method GetValue")]  HRESULT GetValue([out, retval] BSTR *nicknames);
于 2012-11-28T23:32:06.077 回答