1、使用ctypes库
ctypes是Python的标准库,用于与C语言兼容的动态链接库进行交互。以下是一个简单的示例:
C++代码(example.cpp):
#include <iostream>
extern "C" {
__declspec(dllexport) int add(int a, int b) {
return a + b;
}
}
编译C++代码:
g++ -shared -o example.dll example.cpp
若编译c语言代码,仅需要将g++更换成gcc即可。
这步需要注意 g++或gcc版本必须与python版本一致同为32位或64位。
Python代码:
from ctypes import cdll
# 加载动态链接库
my_lib = cdll.LoadLibrary("path/to/example.dll")
# 调用C++函数
result = my_lib.add(2, 3)
print("Result:", result)
2、使用cffi库
cffi是另一个用于与C语言兼容的库进行交互的工具,它提供了一些比ctypes更高级的功能。
安装cffi库:
pip install cffi
Python代码:
from cffi import FFI
ffi = FFI()
# 加载动态链接库
my_lib = ffi.dlopen("path/to/example.dll")
# 定义C++函数的接口
add = my_lib.add
add.argtypes = [ffi.int, ffi.int]
add.restype = ffi.int
# 调用C++函数
result = add(2, 3)
print("Result:", result)