Как использовать мой c стиль забавы c, полученный dlsym в моей программе на c ++ - PullRequest
0 голосов
/ 05 апреля 2020

Так что, в принципе, я не знаю, как использовать эту функцию "createLib". Кажется, я не могу ее использовать:

auto createLibFunc = dlsym(lib, symbol.c_str());

Это работает, я открыл мою загруженную в dymacally библиотеку с помощью dlopen, я могу получить символы функций с помощью dlsym, но я не знаю, как их использовать ceateLibFun c (); после того, как я извлек это, это должно быть что-то вроде createLibFun c (); как легко нет? вот забава createLibs c:

extern "C" IDisplayModule *createLib()
{
    return new LibNcurses();
}

1 Ответ

1 голос
/ 05 апреля 2020

Наиболее читаемым решением IMHO является создание псевдонима типа:

extern "C" typedef IDisplayModule* CreateLibT();

Затем вы можете использовать его для объявления типа указателя вашей функции:

auto createLibFunc = reinterpret_cast<CreateLibT*>(dlsym(lib, symbol.c_str()));
...