Przekazywanie obiektów Pythona jako argumentów funkcji C / C ++ przy użyciu ctypów
Mam dll z funkcją, która przyjmuje PyObject jako argument podobny do tego
void MyFunction(PyObject* obj)
{
PyObject *func, *res, *test;
//function getAddress of python object
func = PyObject_GetAttrString(obj, "getAddress");
res = PyObject_CallFunction(func, NULL);
cout << "Address: " << PyString_AsString( PyObject_Str(res) ) << endl;
}
i chcę wywołać tę funkcję w dll z Pythona za pomocą ctypes
Wygląda na mój kod Pythona
import ctypes as c
path = "h:\libTest"
libTest = c.cdll.LoadLibrary( path )
class MyClass:
@classmethod
def getAddress(cls):
return "Some Address"
prototype = c.CFUNCTYPE(
c.c_char_p,
c.py_object
)
func = prototype(('MyFunction', libTest))
pyobj = c.py_object(MyClass)
func( c.byref(pyobj) )
jest jakiś problem w moim kodzie Pythona, kiedy uruchamiam ten kod, mam komunikat podobny do tego
WindowsError: wyjątek: odczyt naruszenia dostępu 0x00000020
Wszelkie sugestie dotyczące ulepszenia kodu Pythona zostaną zatwierdzone.