Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我知道我可以使用 dlopen 可以在 C/C++ 中打开共享库。 我可以使用 dlopen 调用的结果来确定功能是否存在。
但是,我需要加载具有许多功能的现有库。
除了为所有这些函数重新定义一长串函数指针版本并为每个函数分配 dlsym 之外,还有其他选择吗?
一种可能的解决方案是重新考虑一些事情。
共享的可选库可能非常大,但如果它是可选的,那么您编写的与它交互的代码肯定也是可选的吗?
要减少 dlsym() 分配的数量,您可以编写自己的动态库,该动态库与仅实现可选组件的可选库链接。
然后,您只从应用程序的非可选部分动态加载和分配应用程序的可选组件。
如果您的可选库是 C 库并且您的可选组件是 C++ 对象,这可能会使事情变得过于复杂,但是您拥有它......