仅用python包装c库

2024-04-16 16:53:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一个c库波。所以,定义了接口函数后,我遵循这里的指南

https://stackoverflow.com/a/5868051/2789784

而且很管用。但是,当我把脚本变成一个文件时我的模块.py,并尝试通过导入

import MyModule

然后它给我这个错误。在

^{pr2}$

为什么会这样?我该怎么修?在

固定的: 所以我两个都有我的模块.py以及我的模块.so在同一个文件夹中,python试图加载我的模块.so而不是我的模块.py,当然他不可能成功,改名我的模块.py到波浪.py以及

import wave 

解决问题。所以基本上,如果你只想调用一些c++库函数,你只需要一个python脚本包装器,就这样,不需要c编程。我也可以将我的c++共享库用于其他应用程序。在


Tags: 模块文件pyhttpsimport脚本文件夹com
1条回答
网友
1楼 · 发布于 2024-04-16 16:53:38

当你用C写扩展模块时,必须有一个module init函数。如果您的模块名为wave,那么扩展模块中必须有一个名为initwave的函数。一个简单的例子是:

static PyMethodDef methods[] = {
    /* methods go here, if any */
    {NULL, NULL, 0, NULL}
};

PyMODINIT_FUNC initwave(void){
Py_InitModule3("wave", methods, "this is the doc string");
}

然后用如下代码编译扩展:

^{pr2}$

您可以导入的扩展模块称为wave.so,(我不知道重命名它是否安全,但这绝对不是个好主意) 在python脚本MyModule.py中,只需执行以下操作:

import wave 

相关问题 更多 >