【发布时间】:2011-03-18 05:14:53
【问题描述】:
我想从 C 调用一个在 Python 模块中定义的自定义函数。我有一些初步代码可以做到这一点,但它只是将输出打印到标准输出。
mytest.py
import math
def myabs(x):
return math.fabs(x)
test.cpp
#include <Python.h>
int main() {
Py_Initialize();
PyRun_SimpleString("import sys; sys.path.append('.')");
PyRun_SimpleString("import mytest;");
PyRun_SimpleString("print mytest.myabs(2.0)");
Py_Finalize();
return 0;
}
如何将返回值提取到 C double 并在 C 中使用?
【问题讨论】:
-
你读过这个:docs.python.org/c-api?它似乎回答了你的问题。 docs.python.org/c-api/number.html#PyNumber_Float 似乎就是您要找的东西。它出什么问题了?你还需要什么?
-
真正的问题是如何从
mytest.myabs(2.0)访问返回的对象。一旦有了指向它的指针,我就可以使用 PyNumber_Float 函数轻松地将其转换为浮点数。 -
我们可以通过代码示例看到答案并完成它吗?
标签: c++ python c python-c-api python-embedding