Я использую Code :: Blocks для компиляции общей библиотеки в Ubuntu. Когда я делаю простой файл main.c с:
void* CreateInterface()
{
int* x = (int*)malloc( sizeof( int ) );
*x = 1337;
return x;
}
Это прекрасно работает, и я могу найти функцию CreateInterface с помощью dlsym в другом приложении. Однако я хочу, чтобы функция создала экземпляр класса, написанного на C ++. Я попробовал следующее:
#include "IRender.h"
extern "C"
{
void* CreateInterface()
{
return new Flow::Render::IRender();
}
}
Это скомпилировано нормально, но теперь моему другому приложению не удается найти CreateInterface. Как мне с этим бороться?