代码之家  ›  专栏  ›  技术社区  ›  Overv

如何用GCC输出C++函数?

  •  2
  • Overv  · 技术社区  · 16 年前

    我正在使用Code::Blocks在Ubuntu上编译一个共享库。当我创建一个简单的main.c文件时:

    void* CreateInterface()
    {
        int* x = (int*)malloc( sizeof( int ) );
        *x = 1337;
        return x;
    }
    

    这很好,我可以在另一个应用程序中找到带有dlsym的CreateInterface函数。但是,我希望函数创建一个C++类的实例。我尝试了以下方法:

    #include "IRender.h"
    
    extern "C"
    {
        void* CreateInterface()
        {
            return new Flow::Render::IRender();
        }
    }
    

    这个编译的很好,但是现在我的另一个应用程序找不到CreateInterface。我该怎么处理?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Overv    16 年前

    我已经解决了这个问题,制作了一个.cpp文件,其中包含声明:

    extern "C" void* CreateInterface()
    {
        return new Flow::Render::IRender();
    }
    

    以及一个.c文件,其标题如下:

    extern void* CreateInterface();
    
    推荐文章