gpt4 book ai didi

c++ - 如何隐藏另一个包含的静态库的API?

转载 作者:太空宇宙 更新时间:2023-11-04 04:38:50 24 4
gpt4 key购买 nike

我的问题是我想开发一组我想公开的 API。让它成为“SetA”。

我使用了一些第三方静态库的API,比如数学求解器。让它成为“SetB”。简而言之,SetA 使用 SetB 的 API。

因为我使用“SetB”,所以我必须包含它的头文件和静态库文件。编译时包含“SetB”库,“SetA”库包含“SetB”定义。

但是,我不希望用户因为版本或多定义问题而链接“SetB”的定义。我不希望“SetA”的用户必须处理这个问题,所以是否可以隐藏我静态链接的定义?

最佳答案

您应该使用您的工具链支持的可见性属性。如果您使用的是 clang 或 gcc,则可以使用 __attribute__((visibility ("hidden")))) 隐藏符号.另一种选择推荐here是更喜欢隐藏默认符号可见性(-fvisibility=hidden 在 gcc 中)并使用 __attribute__((可见性(“默认”) )) 在符号的声明中。

此外,要从您链接到的静态库中排除符号,您可以使用链接器选项 --exclude-libs lib1,lib2,...--exclude-libs ALL 指定所有静态库。

关于c++ - 如何隐藏另一个包含的静态库的API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28469428/

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