[swig-JavaScript]is it support std::vector<std::string>* as a OUTPUT?

自古美人都是妖i 提交于 2019-12-11 09:59:38

问题


I use swig to write NodeJS's addon and encountered an error.
is it support std::vector* as a OUTPUT?
my *.i:
%apply std::vector<std::string> *OUTPUT {std::vector<std::string>* result};
when I run swig:
swig -javascript -node -c++ -DV8_VERSION=0x040599 export.i
has error:
export.i:19: Warning 453: Can't apply (std::vector< std::string > *OUTPUT). No typemaps are defined.

I encountered an error at swig-javascript, but it works fine at swig-python.

Anyone can help?
thanks


回答1:


Adding:

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

early in your file seems to be enough to make it work, eg. for a C++ class

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

the following code will work on the Javascript side:

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

This is for SWIG 3, and it works as documented in http://www.swig.org/Doc1.3/Library.html#Library_nn15



来源:https://stackoverflow.com/questions/34739912/swig-javascriptis-it-support-stdvectorstdstring-as-a-output

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!