gpt4 book ai didi

c - 符号保留在本地,未正确导出

转载 作者:行者123 更新时间:2023-12-01 12:37:49 25 4
gpt4 key购买 nike

一位同事给了我一个共享库的修改版本,他在其中添加了一个 GTK 小部件。
在检查共享库文件时,我看到新的小部件函数被定义为本地而不是全局。
我试图在函数上设置 GCC 的可见性属性(在声明本身之后,分号之前),它周围有 G_BEGIN_DECLS 和相同的公共(public)头文件,并定义为库中正确导出的其他文件。
是否有我可能缺少的链接器命令行选项? gcc 使用的“可以”导出的文件列表,也许是导出函数的另一个定义?

最佳答案

When inspecting the shared library file I see that the new widget functions are defined as local and not global.



默认情况下,共享库中的所有符号都被导出(除非您使用 -fvisibility=hiddenprotected 进行编译。

由于观察到您的符号是 LOCAL ,您的链接命令使用链接器版本脚本来控制符号可见性(隐藏除显式导出的符号之外的所有符号)并且您没有修改该版本脚本以将您的函数添加到导出列表中是一个不错的选择。

寻找 -Wl,--version-script=...在您的链接命令行上,并适本地修改版本脚本。

另见 this answer .

关于c - 符号保留在本地,未正确导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28008838/

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