python调用C++的类
时间: 2023-10-12 17:14:31 浏览: 100
Python可以通过扩展模块的方式调用C语言的函数和类。具体步骤如下:
1. 编写C语言的类,包括头文件和源文件。
2. 使用SWIG(Simplified Wrapper and Interface Generator)生成Python的接口文件。
3. 编译C语言的源文件和Python的接口文件,生成扩展模块。
4. 在Python中导入扩展模块,即可调用C语言的类。
下面是一个简单的示例:
C语言的类:
```c
// MyClass.h
#ifndef MYCLASS_H
#define MYCLASS_H
class MyClass {
public:
MyClass(int value);
void setValue(int value);
int getValue();
private:
int mValue;
};
#endif // MYCLASS_H
// MyClass.cpp
#include "MyClass.h"
MyClass::MyClass(int value) {
mValue = value;
}
void MyClass::setValue(int value) {
mValue = value;
}
int MyClass::getValue() {
return mValue;
}
```
生成Python的接口文件:
```
%module MyClass
%{
#include "MyClass.h"
%}
%include "MyClass.h"
```
编译生成扩展模块:
```
swig -c++ -python MyClass.i
g++ -c -fPIC MyClass.cpp MyClass_wrap.cxx -I/usr/include/python3.6
g++ -shared MyClass.o MyClass_wrap.o -o _MyClass.so
```
在Python中导入扩展模块:
```python
import MyClass
obj = MyClass.MyClass(10)
print(obj.getValue()) # 输出:10
obj.setValue(20)
print(obj.getValue()) # 输出:20
```
这样就可以在Python中调用C语言的类了。
阅读全文