Python路上之Python调用C++

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

猜你喜欢

转载自blog.csdn.net/sangohan77/article/details/79098013
今日推荐