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

13 篇文章 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聆听--风雨

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值