KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I would like to wrap a C++ function with SWIG which accepts a vector of STL strings as an input argument: #include <iostream> #include <string> #include <vector> using namespace std; void print_function(vector<string> strs) { for (unsigned int i=0; i < strs.size(); i++) cout << strs[i] << endl; } I want to wrap this into a Python function available in a module called `mymod': /*mymod.i*/ %module mymod %include "typemaps.i" %include "std_string.i" %include "std_vector.i" %{ #include "mymod.hpp" %} %include "mymod.hpp" When I build this extension with from distutils.core import setup, Extension setup(name='mymod', version='0.1.0', description='test module', author='Craig', author_email='balh.org', packages=['mymod'], ext_modules=[Extension('mymod._mymod', ['mymod/mymod.i'], language='c++', swig_opts=['-c++']), ], ) and then import it and try to run it, I get this error: Python 2.7.2 (default, Sep 19 2011, 11:18:13) [GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import mymod >>> mymod.print_function("hello is seymour butts available".split()) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: in method 'print_function', argument 1 of type 'std::vector< std::string,std::allocator< std::string > >' >>> I'm guessing this is saying that SWIG doesn't provide a default typemap for translating between a Python list of Python strings and a C++ STL vector of STL strings. I feel like this is something they might provide somewhere by default, but perhaps I don't know the right file to include. So how can I get this to wor
Tags (comma-separated)
Save Edits
Cancel