Так что все мои пользовательские классы и вызовы функций работают нормально, но у меня есть глобальная функция, которая возвращает ссылку на нашу фабрику игровых объектов, чтобы мы могли создавать игровые объекты в скрипте.
Эта ссылка гарантированно существует в течение всей жизни программы и сценария, поэтому ссылка безопасна.
Теперь вот ошибка, которую я получаю, и код, который я использую.
Traceback (most recent call last):
File "testscript.py", line 7, in <module>
Factory = Globals.GetFactory()
SystemError: Bad call flags in PyCFunction_Call. METH_OLDARGS is no longer suppo
rted!
//get factory is my function pointer to above mentioned function
PyMethodDef globalMethods[] =
{
{"GetFactory", (PyCFunction)GetFactory, METH_VARARGS,
"Gets the Factory"},
{NULL, NULL, 0, NULL}
};
//define out custom types module
PyModuleDef def = { PyModuleDef_HEAD_INIT,
"Globals",
0, -1, globalMethods, 0, 0, 0, 0 };
//push back onto module def ( makes a copy and makes it so pointer just doesn't change
//for the life of the program while python access this data )
gPyTypeObjects->mCustomeModulesDef.push_back(def);
//save the modules memory address by placing it in a list also
PyObject * mod = PyModule_Create(&gPyTypeObjects->mCustomeModulesDef.back());
ERROR_IF( mod == NULL, "Failed to create custom pyModule Globals" );
Py_INCREF(mod);
gPyTypeObjects->mCustomModules.push_back(mod);
return gPyTypeObjects->mCustomModules.back();
}
Я стараюсь предоставить столько материала, сколько нужно, чтобы ничего не упустить.
Но по большей части я уверен, что вам нужна только ошибка и PyMethodDef в дополнение к PyModuleDef, чтобы помочь мне здесь.