Python 调用 C/C++程序的方法
最近写 BUG 的时候遇到 python 计算很慢的情况,于是调研了一波在 python 中嵌入 C++程序的方法,记录一下,便于查询。
一般来说在 python 调用 C/C++程序主要可以分为 3 步:
�
1、编写 C/C++实现程序。- 2、将 C/C++程序编译成动态库。- 3、在 Python 中调用编译生成的库。Python 在调用 C/C++程序时有一些不同,需要
注意。
�
1、Python 调用 C 函数
Python 调用 C 语言程序比较简单,将 C 语言程序编译好,再使用 python 中的 ctypes 模块调用即可。
C 语言源文件:called_c.c
2、Python 调用 C++类
由于 C++支持函数重载,在 g++以 C++方式编译时编译器会给函数的名称附加上额外的信息,这样 ctypes 模块就会找不到 g++编译生成的函数。因此,要让 g++
按照 C 语言的方式编译才可以找到生成的函数名。让编译器以 C 语言的方式编译就要在代码中使用 extern 关键字将代码包裹起来。
C++源文件:cpp_called.cpp
//Python 调用 c++(类)动态链接库
#include <iostream>
using namespace std;
class TestLib
{<!-- -->
public:
void display();
void display(int a);
};
void TestLib::display() {<!-- -->
cout<<"First display"<<endl;
}
void TestLib::display(int a) {<!-- -->
cout<<"Second display:"<<a<<endl;
}
extern "C" {<!-- -->