我想从C++库生成C包装器。
有关于如何手动执行的教程:

  • http://dsc.sun.com/solaris/articles/mixing.html
  • http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html

  • 但这是体力劳动。

    例如,为此:
    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/

    10-09 08:21