[swig-JavaScript]是否支持std :: vector <std :: string> *作为OUTPUT?

时间:2016-01-12 09:32:09

标签: c++ node.js swig

我使用swig编写NodeJS的插件并遇到错误  是否支持std :: vector *作为OUTPUT?
我* .i:
%apply std::vector<std::string> *OUTPUT {std::vector<std::string>* result};
当我跑步时:     swig -javascript -node -c++ -DV8_VERSION=0x040599 export.i
有错误:
    export.i:19: Warning 453: Can't apply (std::vector< std::string > *OUTPUT). No typemaps are defined.

我在swig-javascript上遇到错误,但在swig-python上运行正常。

任何人都可以提供帮助吗? 感谢

1 个答案:

答案 0 :(得分:2)

添加:

%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

所述