[swig-JavaScript] 是不是支持 std::vector<std::string>* 作为输出?

Posted

技术标签:

【中文标题】[swig-JavaScript] 是不是支持 std::vector<std::string>* 作为输出?【英文标题】:[swig-JavaScript]is it support std::vector<std::string>* as a OUTPUT?[swig-JavaScript] 是否支持 std::vector<std::string>* 作为输出? 【发布时间】:2016-01-12 09:32:09 【问题描述】:

我用swig写NodeJS的插件,遇到了错误。 是否支持 std::vector* 作为输出? 我的 *.i:%apply std::vector&lt;std::string&gt; *OUTPUT std::vector&lt;std::string&gt;* result; 当我开始痛饮时:swig -javascript -node -c++ -DV8_VERSION=0x040599 export.i 有错误:export.i:19: Warning 453: Can't apply (std::vector&lt; std::string &gt; *OUTPUT). No typemaps are defined.

我在 swig-javascript 中遇到错误,但在 swig-python 中可以正常工作。

有人可以帮忙吗? 谢谢

【问题讨论】:

【参考方案1】:

添加:

%include "std_string.i"
%include "std_vector.i"
namespace std 
  %template(StringVector) vector<string>;

在你的文件的早期似乎足以让它工作,例如。对于 C++ 类

class MyClass 
  public:
    std::vector<std::string> getNames();
(...)

以下代码将在 Javascript 端运行:

var o = ...
a = o.getNames();
console.log("size: " + a.size());
for (i = 0; i < a.size(); i++) 
    console.log(a.get(i));

这适用于 SWIG 3,它的工作原理与 http://www.swig.org/Doc1.3/Library.html#Library_nn15 中记录的一样

【讨论】:

啊,刚刚意识到你的情况是函数返回一个指向 std::vector<:string> 的指针,而不是一个值......但我想它的工作原理类似(我不'为什么它不会)

以上是关于[swig-JavaScript] 是不是支持 std::vector<std::string>* 作为输出?的主要内容,如果未能解决你的问题,请参考以下文章

Cobalt 是不是支持客户端证书?

Haskell 是不是支持未绑定的变量?

休息是不是支持对象的arraylist?

Akka 是不是原生支持集成模式?

nestjs 是不是支持 graphql 片段?

如何查看android 是不是支持opencl