如何在C ++和Qt中使用在运行时加载的库

时间:2015-05-20 22:50:20

标签: c++ c qt gcc shared-libraries

我目前有一个在桌面和手机上运行的应用程序。桌面需要功能齐全的libfoo.so,但移动版只需要一小部分libfoo.so。其他人已经实现了libfoo-phone.so,它使用与libfoo.so相同的函数名来实现它实际实现的函数。

我目前正在使用libfoo-phone.h,它正常工作,因为它在编译时被链接。但是,当我通过dlopen在运行时链接时,我无法包含头文件。是否有一种简单的方法可以让这项工作没有一个巨大的包装器,可以调用100%的dlsym?

1 个答案:

答案 0 :(得分:2)

为什么在运行时链接?只需链接到相应的.so,具体取决于当前的构建目标(手机与桌面)。平台动态链接器将在运行可执行文件时自动加载* .so,您不必担心库的运行时加载。您可以包含标题,引用您想要的所有符号,并且不会出现任何问题。