热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中调用C++代码

本文介绍了一种方法,通过使用Python的ctypes库来调用C++代码。具体实例为实现一个简单的加法器,并详细说明了从编写C++代码到编译及最终在Python中调用的全过程。

1. 编写C++代码


本示例中的C++代码实现了一个简单的加法功能。使用extern "C"是为了防止C++的名称修饰问题,确保Python的ctypes库能够正确调用。以下是具体的C++代码:



#include

// 加法函数
extern "C"
int add_func(int a, int b)
{
return a + b;
}

// 调用接口
extern "C"
static PyObject *_add_func(PyObject *self, PyObject *args)
{
int _a, _b;
if (!PyArg_ParseTuple(args, "ii", &_a, &_b))
return NULL;
int res = add_func(_a, _b);
return PyLong_FromLong(res);
}

extern "C"
static PyMethodDef CppModuleMethods[] =
{
{"add_func", _add_func, METH_VARARGS, "Add two integers."},
{NULL, NULL, 0, NULL}
};

extern "C"
PyMODINIT_FUNC initcpp_module(void)
{
(void) Py_InitModule("cpp_module", CppModuleMethods);
}

2. 编译C++代码


根据操作系统不同,编译方式也有所不同。在Linux系统中,可以使用以下命令将C++代码编译为动态链接库(.so文件);而在Windows系统中,则需要编译为动态链接库(.dll文件)。



# Linux系统
gcc -o add_demo.so -shared -fPIC add_demo.cpp

# Windows系统
cl /LD add_demo.cpp /link /out:add_demo.dll

3. 在Python中调用C++函数


接下来,我们将在Python脚本中调用之前编译好的C++函数。这里使用Python的ctypes库来加载并调用C++动态链接库中的函数。



import ctypes

# 加载动态链接库
lib = ctypes.CDLL('./add_demo.so')

# 调用C++函数
result = lib.add_func(2, 3)
print(f'Python calling C++ function: Result is {result}')

以上步骤展示了如何从编写C++代码到在Python环境中成功调用的过程。这种方法不仅适用于简单的数学运算,还可以扩展到更复杂的算法和数据处理任务。


推荐阅读
author-avatar
丙尔金开发_448
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有