Hi, I have wrapped a library from C++ to Python using SWIG. But I am facing problems while importing and using it in Python.
$ python >>> import pyossimtest >>> import pyossim >>> a = ["Image1.png","Image2.png"] >>> b = pyossimtest.Info() >>> b.initialize(len(a),a) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "pyossimtest.py", line 84, in initialize def initialize(self, *args): return _pyossimtest.Info_initialize(self, *args) TypeError: in method 'Info_initialize', argument 3 of type 'char *[]' What does this error message imply? I have already handled char** as a special case in swig using typemaps. Here is the code excerpt from the swig-generated .cxx file: SWIGINTERN PyObject *_wrap_Info_initialize(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; pyossimtest::Info *arg1 = (pyossimtest::Info *) 0 ; int arg2 ; char **arg3 ; void *argp1 = 0 ; int res1 = 0 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; bool result; if (!PyArg_ParseTuple(args,(char *)"OO:Info_initialize",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_pyossimtest__Info, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Info_initialize" "', argument " "1"" of type '" "pyossimtest::Info *""'"); } arg1 = reinterpret_cast< pyossimtest::Info * >(argp1); { int i; if (!PyList_Check(obj1)) { PyErr_SetString(PyExc_ValueError, "Expecting a list"); return NULL; } arg2 = PyList_Size(obj1); arg3 = (char **) malloc((arg2+1)*sizeof(char *)); for (i = 0; i < arg2; i++) { PyObject *s = PyList_GetItem(obj1,i); if (!PyString_Check(s)) { free(arg3); PyErr_SetString(PyExc_ValueError, "List items must be strings"); return NULL; } arg3[i] = PyString_AsString(s); } arg3[i] = 0; } { try { result = (bool)(arg1)->initialize(arg2,arg3); } catch (const std::exception& e) { SWIG_exception(SWIG_RuntimeError, e.what()); } } resultobj = SWIG_From_bool(static_cast< bool >(result)); { if (arg3) free(arg3); } return resultobj; fail: { if (arg3) free(arg3); } return NULL; } Kindly help. Thanks and regards, Vipul Raheja
-- http://mail.python.org/mailman/listinfo/python-list