# 使用 ctypes 调用 C++ 编写的共享库
# 首先,确保你有一个编译好的 C++ 共享库(.dll 或 .so 文件),并且该库导出了一个可以被 Python 调用的函数。
# 假设我们有一个名为 `example.cpp` 的 C++ 文件,内容如下:
"""
// example.cpp
extern "C" {
__declspec(dllexport) int add(int a, int b) {
return a + b;
}
}
"""
# 编译这个 C++ 文件为共享库(例如,在 Windows 上生成 example.dll,在 Linux 上生成 libexample.so)。
# 然后在 Python 中使用 ctypes 来调用这个共享库:
import ctypes
# 加载共享库
# 如果是 Windows,假设 DLL 文件路径为 'example.dll'
# 如果是 Linux,假设 SO 文件路径为 'libexample.so'
lib = ctypes.CDLL('./example.dll') # 或者 './libexample.so'
# 定义函数参数类型和返回值类型
lib.add.argtypes = (ctypes.c_int, ctypes.c_int)
lib.add.restype = ctypes.c_int
# 调用 C++ 函数
result = lib.add(3, 4)
print(f"Result of add(3, 4): {result}")
example.cpp):定义了一个简单的 add 函数,并使用 extern "C" 和 __declspec(dllexport) 来确保函数名不会被 C++ 编译器修饰(mangled),从而可以在 Python 中正确调用。.dll 文件,Linux 上是 .so 文件)。你可以使用编译器如 g++ 或 cl 来完成这一步。ctypes 模块加载共享库,并定义函数的参数类型和返回值类型。然后可以直接调用 C++ 中定义的函数。上一篇:python注释方式
下一篇:python中的for循环
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站