c++ - 如何在我的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();
}
解决方案
恕我直言,最易读的解决方案是创建一个类型别名:
extern "C" typedef IDisplayModule* CreateLibT();
然后你可以用它来声明你的函数指针的类型:
auto createLibFunc = reinterpret_cast<CreateLibT*>(dlsym(lib, symbol.c_str()));
推荐阅读
- shell - 后 scp 文件传输无法对源和目标的路径进行校验和以进行比较
- c# - 如何翻转子对象的精灵?
- r - 当一个条件是值列表时如何应用过滤器
- javascript - 反应服务器端渲染 - 无法将数据从服务器处理程序文件传递到反应组件
- reactjs - 如何使用 React-Redux 进行搜索?
- types - 类型注释是提高还是阻碍抽象类型的性能?
- html - 如何使用 CSS 设置静态链接的下划线效果?
- javascript - 有没有办法为 npm 中的 monorepo 项目安装多个 package.json 文件的依赖项
- java - onCreate() 中的无限循环
- python - 如何获得下一个 json 密钥?