gpt4 book ai didi

c++ - 如何链接到运行时可能不存在的目录?

转载 作者:行者123 更新时间:2023-11-30 04:32:23 25 4
gpt4 key购买 nike

我正在为 Linux 编写一个库,它具有一些依赖于共享库 libfoo.so 的功能。

我正在尝试考虑 libfoo.so 不存在的情况。对于这种情况,我有一个明确定义的行为,但我不知道如何正确地实现它,链接明智。

目前,我的库是针对 libfoo.so 编译的,当客户端尝试在不包含 libfoo.so 的环境中编译它的代码时,他会收到链接错误。

我的问题是,我如何构建我的库,即使 libfoo.so 不存在,它也能编译,但行为不同。我自己想出的唯一解决方案是从它分支出一个不支持 foo 的版本,但必须有更好的方法...

提前致谢

根据给定的答案进行跟进:似乎不是链接 libfoo 而是用 dlopen 动态加载它解决了这个问题,但它需要我手动导出所有符号,并且范围有限......是否有任何“不那么痛苦”的实现?

最佳答案

有两个不同的问题符合描述,具体取决于是在编译时还是在运行时检测库的存在。

在编译时,您将不得不使用一些工具来检测库是否存在并修改构建脚本以将该信息传递给代码(想想定义)。

在运行时,您可以避免链接库,而是动态加载它。代码应处理定位/加载库失败并回退到替代版本。

关于c++ - 如何链接到运行时可能不存在的目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7711112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com