首页 > 解决方案 > 如何在我的c++程序中使用dlsym获得的我的c风格func

问题描述

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

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

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

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

标签: c++cdlopendlsym

解决方案


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

extern "C" typedef IDisplayModule* CreateLibT();

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

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

推荐阅读