我使用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上运行正常。
任何人都可以提供帮助吗? 感谢
答案 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
所述