【问题标题】:g++ linker order questiong ++链接器顺序问题
【发布时间】:2011-02-28 18:35:35
【问题描述】:

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

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

然而,这个类已经被构建,并且目标文件被包含在一个名为 common.a 的档案中。

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

所以,我知道我的 Qt 项目可以看到 CSV.a,并且我知道还有其他对 common.a 内容的引用,它没有抱怨,但显然 CSV.a 中的内容看不到共同点。在这种安排中。

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

【问题讨论】:

  • 你定义了那个构造函数吗?
  • 是的,构造函数定义在一个myclass.cpp文件中,生成了一个myclass.o,并包含在档案common.a中
  • 这能解决你的问题吗:stackoverflow.com/questions/1095298/…

标签: c++ linker g++


【解决方案1】:

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

【讨论】:

  • 不错的答案,但我选择了格言,因为他是第一名
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多