如何在我的c ++程序中使用dlsym获得的c样式功能

问题描述 投票:0回答:1

所以基本上我不知道胡使用这个功能“ createLib”,但我似乎无法使用它:

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

这有效,我用dlopen打开了动态加载的lib,我可以用dlsym获得函数符号,但是我不知道如何处理ceateLibFunc();在我获取它之后,它应该类似于createLibFunc();。容易吗?这是createLibs函数:

extern "C" IDisplayModule *createLib()
{
    return new LibNcurses();
}
c++ c dlopen dlsym
1个回答
1
投票

最易读的解决方案恕我直言,是创建类型别名:

extern "C" typedef IDisplayModule* CreateLibT();

然后您可以使用它来声明函数指针的类型:

auto createLibFunc = reinterpret_cast<CreateLibT*>(dlsym(lib, symbol.c_str()));
© www.soinside.com 2019 - 2024. All rights reserved.