gpt4 book ai didi

c++ - 在运行时检查动态库的兼容性

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:30:13 29 4
gpt4 key购买 nike

我正在开发一个 C++ 应用程序,它需要使用 dlopen 在运行时加载动态库。这个库一般不会是我写的。

人们推荐什么方法来确保这个库和我的应用程序之间 future 的二进制兼容性?

我看到的选项是:

  1. 将版本号放在库文件名中,无论如何都尝试加载它(通过符号链接(symbolic link))。如果 dlopen 失败,报告错误。

  2. 维护返回版本号的第二个接口(interface)。但是,如果此接口(interface)由于某种原因发生更改,我们会遇到与以前相同的问题。

还有其他选择吗?

最佳答案

您应该定义一个关于动态加载(即 dlopen-ed)库的约定。

你可能有这样的约定,即库需要提供一个 const char mylib_version_str[]; 符号,它给出了 API 的版本等等。当然你可以有自己的预处理器技巧来帮助解决这个问题。

为了获得灵感,您可以从其 plugins 中查看 GCC 的要求。 (例如 plugin_is_GPL_compatible 符号)。

如果动态加载的库是用 C++ 编写的,您可以使用 demangling检查函数的签名....

关于c++ - 在运行时检查动态库的兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13684759/

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