Как экспортировать функции C ++ с GCC? - PullRequest
2 голосов
/ 08 апреля 2010

Я использую 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. Как мне с этим бороться?

1 Ответ

1 голос
/ 08 апреля 2010

Я решил проблему, создав файл .cpp с объявлением:

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

и файл .c с таким заголовком:

extern void* CreateInterface();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...