Ошибка во время выполнения Python3.2 с пользовательской глобальной функцией - PullRequest
1 голос
/ 22 июля 2011

Так что все мои пользовательские классы и вызовы функций работают нормально, но у меня есть глобальная функция, которая возвращает ссылку на нашу фабрику игровых объектов, чтобы мы могли создавать игровые объекты в скрипте.
Эта ссылка гарантированно существует в течение всей жизни программы и сценария, поэтому ссылка безопасна.
Теперь вот ошибка, которую я получаю, и код, который я использую.

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, чтобы помочь мне здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...