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

时间:2010-04-07 22:07:46

标签: c++ linux export shared

我正在使用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 个答案:

答案 0 :(得分:1)

我通过使用声明生成.cpp文件来解决问题:

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

和.c文件,标题如下:

extern void* CreateInterface();