动态加载共享的可选对象

时间:2012-12-07 02:15:15

标签: c++ c linux

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

但是,我需要加载一个包含许多函数的现有库。

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

1 个答案:

答案 0 :(得分:3)

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

共享可选库可能非常大,但如果它是可选的,那么肯定是 您正在编写与其接口的代码也是可选的吗?

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

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

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