我正在使用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。我该怎么处理这个?
答案 0 :(得分:1)
我通过使用声明生成.cpp文件来解决问题:
extern "C" void* CreateInterface()
{
return new Flow::Render::IRender();
}
和.c文件,标题如下:
extern void* CreateInterface();