我正在使用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。我该怎么处理?
我已经解决了这个问题,制作了一个.cpp文件,其中包含声明:
extern "C" void* CreateInterface() { return new Flow::Render::IRender(); }
以及一个.c文件,其标题如下:
extern void* CreateInterface();