C++ 使用Python/C API的Hello World示例

14 篇文章 1 订阅

简介

通过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 c api 获取 class 的type
https://stackoverflow.com/questions/11867227/how-can-i-use-pyobject-isinstance-with-a-non-builtin-class-as-second-argument

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值