g ++链接器顺序问题

问题描述:

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

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

但是,这个类已经建立,并且目标文件被包含在名为common.a的存档中。

引用MyClass的其实是另一个库中的代码,称为CSV.a

所以,我知道我的Qt的项目可以看到CSV.a,我知道有在common.a到的东西其他参考它不是在抱怨,但显然CSV.a中的内容无法看到这种安排中常见的东西。

我需要做什么改变?

+0

您是否定义了构造函数? – 2011-02-28 18:36:37

+0

是的,构造函数是在myclass.cpp文件中定义的,并且生成了myclass.o,并将其包含在归档文件中common.a – Derek 2011-02-28 18:41:24

+0

这是否解决了您的问题:http://*.com/questions/1095298/gcc -c-linker-errors-undefined-reference-to-vtable-for-xxx-undefined-referen/1095321#1095321 – 2011-02-28 19:04:57

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

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

+0

好的答案,但我选择了格言,因为他在第一 – Derek 2011-03-01 18:59:34