g ++链接器顺序问题

时间:2011-02-28 18:35:36

标签: c++ linker g++

我试图找出在Qt Creator中编译代码时导致错误的东西,即在我外部构建的库中进行链接。

它抱怨“对myclass :: myclass(args)”构造函数的未定义引用。

但是,已经构建了此类,并且目标文件包含在名为common.a的存档中。

引用myclass的代码实际上在另一个库中,名为CSV.a

所以,我知道我的Qt项目可以看到CSV.a,而且我知道还有其他一些共同点的引用。它没有抱怨,但显然CSV.a中的东西看不到这种安排中的共同点。

我需要做些什么不同的事情?

2 个答案:

答案 0 :(得分:4)

链接器使用命令行中列出库的顺序来确定实际需要哪些符号。您需要从最依赖到最依赖的顺序进行排序,以便做出决定。例如,首先列出CSV.a,以便编译器知道它需要在某处找到myclass::myclass(args)。然后列出common.a秒,编译器将找到并链接该构造函数。

答案 1 :(得分:0)

您可能需要确保链接器命令行CSV.a后跟common.a,而不是相反。