Python搭建通信系统时在网上下载的源代码中的部分库是C++,结合自己之前写的模块也是C++ 模块,学习一手Python文件调用C++的方法,参考文章链接:Python实例浅谈之三Python与C/C++相互调用
Python调用C++(类)动态链接库
(1)C++类文件:pycallclass.cpp
#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" {
TestLib obj;
void display() {
obj.display();
}
void display_int(int a) {
obj.display(a);
}
}//可以由python调用的关键,只能调用c函数,但可以通过上述方式将c++中的类方法给解析出来。首先生成一个对象 Obj(为了调用这个类中定义的方法),然后定义几个c函数(这是为了能够被Python调用),c函数的实现由obj的类方法实现(类方法相当与间接实现c函数)。
(2)Python调用动态库的文件:pycallclass.py
import ctypes
so = ctypes.cdll.LoadLibrary
lib = so("./libpycallclass.so")
print 'display()'
lib.display()
print 'display(100)'
lib.display_int(100)
(3)在文件目录下
>>>g++ -o libpycallclass.so -shared -fPIC pycallclass.cpp
# 首先把pycallclass.cpp 整成一个叫作 libpycallclass.so的包,下面才可以由.py调用,调用的包的位置取决于g++把这个包放到哪里了
>>> python pycallclass.py
display()
First display
display(100)
Second display:100