简介
通过Python/C API可以用C/C++或者其他语言(比如rust、go)来编写Python的扩展。很多机器学习的Python库底层其实都是用C/C++实现的。其他语言也可以通过Python/C API来调用Python的模块,总之Python/C API就是一座Python与其他语言之间的桥梁。本文通过一个简单的例子介绍如何在C/C++中调用Python。
Python/C API Reference Manual — Python 3.10.4 documentation
环境:
Windows 10、VS2022、Python3.10
不过这玩意本身跟环境关系不大,用法都是相通的。
VS2022配置:
VS中使用Python,需要将Python的include和lib配置一下。
1、配置附加包含目录
?
2、配置附加库目录
代码
用两种方式输出“Hello World!”,如下:
#include <Python.h>
int main() {
Py_Initialize();
PyObject* pyBuiltIn = PyImport_ImportModule("builtins");//导入模块
PyObject* tmp = PyObject_CallMethod(pyBuiltIn, "print", "s", "Hello World!");//调用 print("Hello World!")
if (tmp != NULL) Py_DECREF(tmp);
Py_DECREF(pyBuiltIn);
//另一种方式
PyRun_SimpleString("print('Hello World!')");
Py_Finalize();
}
编译运行即可。如果提示找不到python3.dll、python310.dll,把这些dll拷贝到程序目录即可。
运行结果
如下:
参考:
Linux下Python与C++混合编程 - 飞越彩虹 - 博客园
python - How can I use PyObject_IsInstance with a non-builtin class as second argument? - Stack Overflow
?
|