一:python3, c++11
二:代码
cpp
#include <iostream>
using namespace std;
class TestObj
{
public:
void display()
{
std::cout << "Default display\n";
}
void display(int val)
{
std::cout << "display value: " << val << std::endl;
}
int add_int(int a, int b)
{
return (a + b);
}
};
extern "C"
{
TestObj obj;
void display() {obj.display();}
void display_int(int val) {obj.display(val);}
int add_int(int a, int b) { return obj.add_int(a, b); }
}
python
import ctypes
so = ctypes.cdll.LoadLibrary
lib = so('./libpy.so')
print('--------')
lib.display()
print('--------')
lib.display_int(100)
print('--------')
print(lib.add_int(99, 88))
三:编译cpp生成库文件
g++ pycall.cpp -shared -fPIC -std=c++11 -o libpy.so
四:运行
python3 pycall.py
五:结果
--------Default display
--------
display value: 100
--------
187