gpt4 book ai didi

c - 仅在满足依赖关系时才加载共享库

转载 作者:IT王子 更新时间:2023-10-29 00:46:16 25 4
gpt4 key购买 nike

我有一个链接到两个共享库的可执行文件,每个共享库都依赖于系统共享库。 (在这种情况下,这些是 OpenCL 和 CUDA 运行时库,但这不会影响问题)

     +--> libA.so  --->  libOpenCL.so (on system)
Exe -|
+--> libB.so ---> libcudart.so (on system)

Exe , 以及 libA.solibB.so分发给用户。用户可能没有 libOpenCL.so和/或 libcudart.so安装在他们的系统上。

目标是 Exe无论如何都应该能够启动,并在运行时检测到,例如libA.so无法加载,因为不满足其依赖项。

一种可能性是使 libA.so使用 dlopen() 在运行时加载,它会检测加载是否失败。

是否也可以正常链接libA.soExe , 但在某种程度上 Exe如果 libA.so 仍然可以启动无法加载?这在 Linux 和/或 Windows 平台上是否可行?

最佳答案

如果你想这样做,你需要dlopen。在程序加载时,除了执行失败之外,没有用于错误报告的 vector ,如果缺少定义,也没有任何合理的选择来确定要在丢失的库中找到的符号将解析为什么。

关于c - 仅在满足依赖关系时才加载共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52557548/

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