Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

python调用c++库

作者:千山暮雪ミ   发布日期:2025-06-25   浏览:23

# 使用 ctypes 调用 C++ 库的示例

# 首先,确保你有一个编译好的 C++ 库(例如 libexample.so 或 example.dll),并且该库导出了所需的函数。

# 1. 编写 C++ 代码并编译为共享库
# 假设我们有一个简单的 C++ 函数 add,它接受两个整数并返回它们的和。

# example.cpp
/*
extern "C" {
    int add(int a, int b) {
        return a + b;
    }
}
*/

# 将上述代码编译为共享库(在 Linux 上):
# g++ -shared -o libexample.so -fPIC example.cpp

# 2. 在 Python 中使用 ctypes 调用 C++ 库

import ctypes

# 加载共享库
lib = ctypes.CDLL('./libexample.so')

# 定义函数参数类型和返回类型
lib.add.argtypes = (ctypes.c_int, ctypes.c_int)
lib.add.restype = ctypes.c_int

# 调用函数
result = lib.add(3, 4)
print(f"Result: {result}")  # 输出: Result: 7

解释说明:

  1. C++ 代码:我们编写了一个简单的 C++ 函数 add,它接受两个整数并返回它们的和。为了确保 C++ 函数可以被 Python 正确调用,我们使用了 extern "C" 来防止名称修饰(name mangling),这是因为在 C++ 中函数名可能会被编译器修改以支持重载等功能,而 extern "C" 可以避免这种情况。

  2. 编译 C++ 代码:我们将 C++ 代码编译为共享库(Linux 上是 .so 文件,Windows 上是 .dll 文件)。这里使用了 -shared-fPIC 选项来生成共享库。

  3. Python 代码:我们使用 ctypes 模块加载共享库,并定义了函数的参数类型和返回类型。然后我们调用了这个函数,并打印了结果。

  4. 注意事项:确保共享库文件路径正确,并且库文件在 Python 进程的搜索路径中。如果库文件不在当前目录,可以使用绝对路径或修改环境变量 LD_LIBRARY_PATH(Linux)或 PATH(Windows)。

上一篇:python升级pip

下一篇:python apply

大家都在看

python时间格式

python ord和chr

python中的yield

python自定义异常

python list.pop

python的for i in range

npm config set python

python代码简单

python读取文件夹

python中turtle

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站