# 使用 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
C++ 代码:我们编写了一个简单的 C++ 函数 add
,它接受两个整数并返回它们的和。为了确保 C++ 函数可以被 Python 正确调用,我们使用了 extern "C"
来防止名称修饰(name mangling),这是因为在 C++ 中函数名可能会被编译器修改以支持重载等功能,而 extern "C"
可以避免这种情况。
编译 C++ 代码:我们将 C++ 代码编译为共享库(Linux 上是 .so
文件,Windows 上是 .dll
文件)。这里使用了 -shared
和 -fPIC
选项来生成共享库。
Python 代码:我们使用 ctypes
模块加载共享库,并定义了函数的参数类型和返回类型。然后我们调用了这个函数,并打印了结果。
注意事项:确保共享库文件路径正确,并且库文件在 Python 进程的搜索路径中。如果库文件不在当前目录,可以使用绝对路径或修改环境变量 LD_LIBRARY_PATH
(Linux)或 PATH
(Windows)。
上一篇:python升级pip
下一篇:python apply
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站