我是 swig 的新手,我正在尝试创建一个 swig 包装器,以便在 python 中使用一些 C++ 文件。我有以下 C++ 类。
以下是我要转换的代码片段:
/*packet_buffer.h*/
class CPacketBuffer {
public:
// construct based on given buffer, data is not copied
CPacketBuffer(uint8_t* data, uint32_t length) {
mpBuffer = data;
mLength = length;
mHead = 0;
mTail = length;
}
uint8_t* GetBuffer() {
return (mpBuffer + mHead);
}
void Add(const uint8_t* data, uint32_t length) {
if ((mTail + length) > mLength) {
length = (mLength - mTail);
}
//....
}
我一直在尝试使用 swig 文档的帮助编写一个 example.i 文件,该文件今天整天都接受指向 typedefs(uint8_t *) 的指针,但我没有成功。
以下是我尝试过的一个 packet_buffer.i 文件,但它不起作用。
%module packet_buffer
%include typemaps.i
%apply unsigned char* {uint8_t*};
%apply unit8_t *INPUT {uint8_t *data};
%{
#define SWIG_FILE_WITH_INIT
#include "../include/packet_buffer.h"
%}
%include "../include/packet_buffer.h"
- 如何为使用指向 typedef 的指针的成员函数编写 swig 代码?
- 我可以编写一个可以在代码中使用的通用 %apply,还是必须为每个 INPUT、OUTPUT 参数编写细节?