【发布时间】:2013-11-22 05:01:50
【问题描述】:
我已经编写了代码来在 Python C 扩展 (MyStatus) 中定义一个新类型。 如page 中所述,我编写了 C 代码来定义分配、解除分配等。
我能够编译模块并从 python 中使用它。
现在我正在尝试在另一个 Python C 扩展 (TestStatus) 中使用这种新类型 我的要求是我只需要一个.so。 我不想直接从 Python 代码中使用 MyStatus。 我将只在我的代码中导入 TestStatus,并且我想从为 TestStatus 编写的 C 扩展中初始化 MyStatus。
我已经为 TestStatus 编写了这样的代码
static PyObject * TestStatus_checkPyObject *self, PyObject *args)
{
PyObject * mystatus = NULL;
const char *command;
/* Call the class object. */
mystatus = PyObject_CallObject((PyObject *) &MyStatusType, NULL);
return mystatus;
}
PyMODINIT_FUNC initTestStatus(void)
{
(void) Py_InitModule("TestStatus", TestMethods);
initMyStatus();//This is available in the C code written for MyStatus
}
我能够像我在代码中提到的那样创建。 但我坚持为 MyStatus 设置变量,它是一个整数和 char*(PyObject*) 有人可以对此有所了解,例如我的方法是否正确以及如何通过参数初始化和使用来自 TestStatus 的 MyStatus。
我正在 Rhel 6.3 上使用 Python 2.6.6 尝试此操作
在 MyStatus 中我有 2 个变量
typedef struct {
PyObject_HEAD
int mStatus;
PyObject *mErrorString;
} MyStatus;
我需要从 TestStatus 初始化它。
【问题讨论】:
-
你被困在设置“变量”上,哪些变量?你能更具体一点吗,那会有所帮助。为什么只需要
.so文件?如果将两个模块的代码放在一个文件中,它会起作用吗? - 抱歉,但我没有放弃解决问题,所以很难解释清楚。 -
我已经编辑了帖子以添加有关变量的信息。
标签: python-2.7 python-c-extension