cpp源代码
#include "iostream"
using namespace std;
class Calc {
public:
int add(int a, int b);
};
int Calc::add(int a, int b) {
cout << "收到参数为a,b: " << a << " " << b << endl;
return a+b;
}
extern "C" {
Calc calc;
int add(int a, int b) {
return calc.add(a, b);
}
};
编译cpp代码成so动态库
g++ -o add.so -shared -fPIC add.cpp
# 如果c++代码路由cout 中文乱码再用下面这个
g++ -finput-charset=UTF-8 -fexec-charset=GBK -o add.so -shared -fPIC add.cpp
python代码
import ctypes
dll = ctypes.cdll.LoadLibrary
calc_lib = dll('./add.so')
r = calc_lib.add(3, 5)
print(r)
输出
PS D:\workspace\hellocpp> python .\app.py
收到参数为a,b: 3 5
8