python 调用 cpp 动态库示例 CDLL

在 Python 中调用 C++ 库有几种常见的方法,其中包括使用 ctypes、Cython、SWIG 和 CFFI 等工具。
这里我们测试其中比较简单的方法,使用 ctypes 模块来调用 C++ 的动态函数库:

1. 编写并编译一个 cpp 的库

首先编写一个简单的 C++ 库,例如 the_math_lib.cpp:

#include <iostream>

extern "C" {
    int cpp_add(int x, int y)
    {
        std::cout << "Add from C++ lib" << std::endl;
        return x + y;
    }
}

2. 编译为共享库

将 C++ 代码编译为共享库, Linux 下编写 Makefile:

the_math_lib.so: the_math_lib.cpp
    g++ -shared -o the_math_lib.so -fPIC the_math_lib.cpp

3. Python 中调用 cpp 函数

编写 Python 脚本来调用 C++ 库,例如 invoke_cpp_function.py:

import ctypes

# Load the shared library
math_lib = ctypes.CDLL('./cpp_src/the_math_lib.so')

# Call the C++ function
w = math_lib.cpp_add(3, 4)
print('w =', w)


4. 运行 Python 脚本

运行 Python 脚本来调用 C++ 库:


 

python invoke_cpp_function.py


通过这种方法,可以在 Python 中调用编写的 C++ 库函数。

这只是一种简单的方法,实际项目中可能需要处理更复杂的数据类型和接口。

如果涉及更复杂的情况,可以考虑使用 Cython、SWIG 或 CFFI 等工具来更好地集成 C++ 代码和 Python。

效果图示:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值