python - 在我自己的 C 模块中使用 python 模块的 C API

标签 python module linker pygame

这似乎是我想要的,只是我想在另一个 C 模块中创建一个 C PyObject 的实例。

Create instance of a python class , declared in python, with C API

但我无法找到使用 C 中的 Python 模块的文档。我似乎无法在网上找到相关文档,因为每个人都只谈论用 C 扩展 Python。

我的问题是我有一个我想加速的 Pygame。所以我正在制作一个需要访问 Pygame 的 C 模块。我如何导入pygame?我不想导入两份,对吗?我能弄清楚的编码部分,我只是不知道如何配置和链接代码。我知道我一定遗漏了一些文档,所以如果有人能指出我正确的方向,我将非常感激。


更新:抱歉,我重读了我的帖子,发现我的措辞很糟糕。

如果您安装了 pygame,您可以查看 Python/include 目录并找到 pygame 头文件。他们有什么用?我认为你的 C 模块可以直接访问 pygame C 模块,所以你的 python 脚本和你的 C 模块使用相同的 pygame 实例。

有人澄清一下吗?

最佳答案

诀窍是编写普通的 Python 例程,但在 C 中。使用 PyImport_ImportModule() , PyObject_GetAttr() , 和 PyObject_Call()视情况而定。

关于python - 在我自己的 C 模块中使用 python 模块的 C API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2170625/

相关文章:

c++ - OpenCV - 未定义的引用 : SurfFeatureDetector and BruteForceMatcher

python - Python 脚本的文件名和行号

perl - 当我使用模块时如何找到 Perl 加载的文件?

python - 比较排列和组合

未找到 Perl 模块,但已安装

google-app-engine - 谷歌应用引擎 : a single backend service/module?

memory-management - 如何在带有动态库的程序中使用 tcmalloc

ios - 抑制链接器警告 : "Meta method X in category from Y overrides method from class in Z"

python - Cython Memoryview 作为返回值

python - 切片列表的枚举()不能按预期工作