【发布时间】:2015-03-16 12:38:02
【问题描述】:
一位同事给了我一个共享库的修改版本,他在其中添加了一个 GTK 小部件。
在检查共享库文件时,我看到新的小部件函数被定义为本地而不是全局。
我试图在函数上设置 GCC 的可见性属性(在声明本身之后,分号之前),它周围有 G_BEGIN_DECLS 和相同的公共头文件,并定义为库中正确导出的其他文件。
是否有我可能缺少的链接器命令行选项? gcc 使用的“可以”导出的文件列表,也许是导出函数的另一个定义?
【问题讨论】:
-
我们需要一个高质量的水晶球来回答这个问题。尝试将您的问题简化为一个小示例(一个十行程序应该足以演示该问题),然后您可以发布它,并附上代码和命令行。
-
如果我可以用一个编译命令行将我的问题减少到一个 10 行程序,那么我就可以用谷歌搜索每个命令行参数并自己找到问题。共享库是LXDE的libfm,是不是缩小了一点?
-
是的,一旦减少,问题可能会很明显,这就是重点...首先,您应该只需要编译提供有问题的小部件的文件,这应该仍然有同样的问题。然后您可以开始删除该文件的大部分内容。不太可能的是,当您没有显示代码、没有命令行等时,有人会猜到失败的原因。
标签: c gcc gtk shared-libraries