gpt4 book ai didi

python - 对需要另一个扩展的 Python 进行 C 扩展

转载 作者:太空狗 更新时间:2023-10-30 00:47:02 26 4
gpt4 key购买 nike

我有几个 Python 函数,可以用来更轻松地使用 Pygame 进行游戏开发。我将它们放在我的 Python 路径中一个名为 helper.py 的文件中,因此我可以从我制作的任何游戏中导入它们。我想,作为学习 Python 扩展的练习,将该模块转换为 C。我的第一个问题是我需要使用 Pygame 中的函数,我不确定这是否可能。 Pygame 安装了一些头文件,但它们似乎没有 C 版本的 Python 函数。也许我遗漏了什么。

我该如何解决这个问题?作为一种解决方法,该函数目前接受一个函数参数并调用它,但这不是理想的解决方案。

顺便说一下,使用 Windows XP、Python 2.6 和 Pygame 1.9.1。

最佳答案

/* get the sys.modules dictionary */
PyObject* sysmodules PyImport_GetModuleDict();
PyObject* pygame_module;
if(PyMapping_HasKeyString(sysmodules, "pygame")) {
pygame_module = PyMapping_GetItemString(sysmodules, "pygame");
} else {
PyObject* initresult;
pygame_module = PyImport_ImportModule("pygame");
if(!pygame_module) {
/* insert error handling here! and exit this function */
}
initresult = PyObject_CallMethod(pygame_module, "init", NULL);
if(!initresult) {
/* more error handling &c */
}
Py_DECREF(initresult);
}
/* use PyObject_CallMethod(pygame_module, ...) to your heart's contents */
/* and lastly, when done, don't forget, before you exit, to: */
Py_DECREF(pygame_module);

关于python - 对需要另一个扩展的 Python 进行 C 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1583077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com