pycallclass.cpp
#include <iostream>
using namespace std;
class TestLib {
public:
void display();
int display(int a);
};
void TestLib::display() {
cout<<"First display"<<endl;
}
int TestLib::display(int a) {
cout<<"Second display:"<<a<<endl;
return a+100;
}
extern "C" {
TestLib obj;
void display() {
obj.display();
}
int display_int(int x) {
return obj.display(x);
}
}
pycallclass.py
import ctypes
so = ctypes.cdll.LoadLibrary
lib = so("./libpycallclass.so")
print 'display()'
lib.display()
print 'display(100)'
lib.display_int(100)
编译运行:
g++ -o libpycallclass.so -shared -fPIC pycallclass.cpp
python pycallclass.py