动态加载共享的可选对象

Dynamically load shared optional object

本文关键字:对象 加载 共享 动态      更新时间:2023-10-16

我知道我可以使用dlopen在C/C++中打开共享库。
我可以使用 dlopen 调用的结果来确定功能是否存在。

但是,我需要加载具有许多函数的现有库。

是否有替代方法可以为所有这些函数重新定义一长串函数指针版本,并为每个函数分配 dlsym?

一种可能的解决方案是重新思考一下。

共享可选库可能很大,但如果它是可选的,那么肯定是您正在编写的代码与它进行交互也是可选的?

为了减少 dlsym() 赋值的数量,您可以编写自己的动态库,该库与仅实现可选组件的可选库链接。

然后,从应用程序的非可选部分动态加载并仅分配应用程序的可选组件。

如果您的可选库是 C 库并且您的可选组件是C++对象,这可能会使事情过于复杂,但您有它......