boost::python: Klassenmethoden Aufrufen?
-
Hi leute, ich habe ein Problem:
Ich möchte per python eine klassenmethode in c++ aufrufen:BOOST_PYTHON_MODULE(gHost) { def("registerHandler", &CPython::RegisterHandler); }void CPython :: RegisterHandler(PyObject *HandlerName, PyObject *PyPointer) { char *nHandlerName = PyString_AsString(HandlerName); for( vector<CHandler *> :: iterator i = m_Handlers.begin(); i != m_Handlers.end(); i++ ) { if( (*i)->GetName() == nHandlerName ) { (*i)->RegisterPyFunc(PyPointer); return; } } NewHandler(nHandlerName); RegisterHandler(HandlerName, PyPointer); }Fehlermeldung beim starten der .exe:
Traceback (most recent call last): File "C:\Users\Krauzi\Desktop\GHost++ Python\python\__init__.py", line 3, in < module> test.init() File "C:\Users\Krauzi\Desktop\GHost++ Python\python\test.py", line 8, in init gHost.registerHandler( "PlayerJoin", myFunc ) Boost.Python.ArgumentError: Python argument types in gHost.registerHandler(str, function) did not match C++ signature: registerHandler(class CPython {lvalue}, struct _object *, struct _object *)Anscheinend gibts deshalb Probleme: class CPython {lvalue}. Vermutlich wird beim Aufrufen einer Methode "unsichtbar" der Klassenzeiger mit aufgerufen.
Tja nur wie behebe ich jetzt dieses Problem?