2016-01-12 2 views
1

Я использую 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] Поддерживается ли std :: vector <std::string> * как OUTPUT?

Я обнаружил ошибку на Swig-JavaScript, но он отлично работает в Swig-питона ,

Любой может помочь?
благодаря

ответ

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

+0

ARGH, просто понял, что ваш случай функция возвращает указатель на std :: vector , а не значение ... но я бы предположил, что он работает аналогично (я не понимаю, почему это не так) – farialima

 Смежные вопросы

  • Нет связанных вопросов^_^