c++ - 从 C++ 生成 C 包装器?

标签 c++ c wrapper ffi

我想从 C++ 库生成 C 包装器。 有关于如何手工操作的教程:

但是这太费体力了。

例如,对于这个:

struct RtAudio {
    virtual DeviceInfo const& f() {...}
    class DeviceInfo {
        virtual void g() { ... }
    };
    ...
};

我需要写:

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) {
        }
    }
}

是否有工具可以自动化这个过程?

最佳答案

你可以试试SWIG ,C代码生成器是去年的GSoC项目。 AFAIK 他们还没有将它合并到主干,所以你必须从 SVN checkout 并构建分支。

关于c++ - 从 C++ 生成 C 包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1067278/

相关文章:

c++ - 使用 Qt Creator 的 GUI 来播放视频

c - scanf 的默认值

c - memcpy 覆盖一个结构,而另一个结构在 C 中不起作用

python - 在 Python 中,如何定义一个函数包装器来验证具有特定名称的参数?

c++ - 当我将代码提交给在线法官时,LDBL_MAX 和 LDBL_MIN 返回错误答案

c++ - 使用 Frank Luna 的技术创建 3d 平面 : what are sinf and cosf?

c++ - 如何制作一个可以在 C 库中用作回调的 wxWidget 方法?

C# 装箱/包装器 - 自定义类充当整数

java - 包装对静态方法/变量的访问的模式名称是什么?

c++ - MS Access 中 NZ 函数的 ADO 等价物?