【问题标题】:How do I return a string value from C++ to javascript (windows/Visual studio 2008)?如何将字符串值从 C++ 返回到 javascript (windows/Visual Studio 2008)?
【发布时间】:2012-11-16 12:07:36
【问题描述】:

我有以下 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 代码应该是什么样子?

【问题讨论】:

  • 尝试在 IDL 中指定 nicknames 是一个返回值 ... [out, retval] BSTR *nicknames
  • @Captain 谢谢!这样可行。如果您将此作为答案,我会接受。否则我会复制你的答案并检查它。无论如何,谢谢

标签: javascript c++ visual-studio idl


【解决方案1】:

Javascript 本身并不知道如何处理通过参数返回的值。您必须明确声明哪个参数是返回值,否则 COM 将简单地返回 HRESULT。您可以通过以下方式做到这一点。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 2011-05-02
    • 2020-04-26
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多