num*_*ric 19 c c++ ffi wrapper
我想从C++库生成C包装器.有关如何手动完成的教程:
但这太过于体力劳动.
例如,为此:
struct RtAudio {
virtual DeviceInfo const& f() {...}
class DeviceInfo {
virtual void g() { ... }
};
...
};
Run Code Online (Sandbox Code Playgroud)
我需要写:
struct RtAudioC {
RtAudio x;
};
struct DeviceInfo {
RtAudio::DeviceInfo x;
};
extern "C" {
RtAudioC* newRtAudio() {
return new RtAudioC;
}
void deleteRtAudio(RtAudioC *p {
delete p;
}
/* do something with RtAudio::f() */
void g(DeviceInfo *p) {
try {
p->x.g();
} catch (SomeError & err) {
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否有可以自动执行此过程的工具?
gmmproc 可以为基于 gobject 的 C 库创建 C++ 包装器,但这是我听说过的唯一介于 C 和 C++ 之间的代码生成器。
如果您擅长编写解析器,那么创建基本的包装器生成器并不是一项太困难的任务。最后你可能需要手动添加一些收尾工作,但仍然会减少你的工作量。