g ++链接器顺序问题
问题描述:
我试图找出在尝试编译Qt Creator中的代码时导致错误的东西,即在我外部构建的库中进行链接。g ++链接器顺序问题
它抱怨“未定义的myclass :: myclass(args)”引用构造函数。
但是,这个类已经建立,并且目标文件被包含在名为common.a的存档中。
引用MyClass的其实是另一个库中的代码,称为CSV.a
所以,我知道我的Qt的项目可以看到CSV.a,我知道有在common.a到的东西其他参考它不是在抱怨,但显然CSV.a中的内容无法看到这种安排中常见的东西。
我需要做什么改变?
答
您可能需要确保在链接器命令行CSV.a
后面跟着common.a
,而不是相反。
答
链接器使用库在命令行上列出的顺序来确定哪些符号实际需要。你需要从最依赖的到最不依赖的顺序排列,这样才能做出决定。例如,首先列出CSV.a
,以便编译器知道它需要在某处找到myclass::myclass(args)
。然后列出common.a
秒,然后编译器将找到并链接该构造函数。
+0
好的答案,但我选择了格言,因为他在第一 – Derek 2011-03-01 18:59:34
您是否定义了构造函数? – 2011-02-28 18:36:37
是的,构造函数是在myclass.cpp文件中定义的,并且生成了myclass.o,并将其包含在归档文件中common.a – Derek 2011-02-28 18:41:24
这是否解决了您的问题:http://*.com/questions/1095298/gcc -c-linker-errors-undefined-reference-to-vtable-for-xxx-undefined-referen/1095321#1095321 – 2011-02-28 19:04:57