【问题标题】:QtCreator: symbol(s) not found for architecture x86_64 issue on Mac OS MavericksQtCreator:在 Mac OS Mavericks 上找不到架构 x86_64 问题的符号
【发布时间】:2014-04-23 22:10:26
【问题描述】:

我正在尝试使用 Qt 编译 C++ 程序。当我尝试编译时,我得到了这个输出:

symbol(s) not found for architecture x86_64
linker command failed with exit code 1 (use -v to see invocation)

我能做什么?为什么会这样?我已经尝试过设置

QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9

(正如本文OpenCv + mac os x + qt creator = strange linking bug? 中所建议的那样)在我的项目文件中,但它没有解决问题。

有什么想法吗?

编辑:

这是我的项目文件的样子:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp \
    a.cpp \
    b.cpp \
    c.cpp

HEADERS += \
    a.h \
    b.h \
    c.h

【问题讨论】:

  • 你在使用 QtCreator 吗?您能否展示您的 qmake 项目文件并与我们分享您的设置?您能否也展示一下 qmake 在您的机器上是如何运行的,即具体使用哪些参数?
  • @LaszloPapp 我更新了我的答案。你还需要什么吗?
  • 是的,请:您能显示您运行的 qmake 命令以查看所有传递的参数吗?这是 64 位 Mac 吗?
  • 听起来链接缺少一些外部库(OpenCV?)。不幸的是,标签Issues 中显示的消息不是很有帮助。链接器的原始输出包含解决问题所需的信息。你可以在 QtCreator 的Compile Output 中看到这一点。请发布带有链接器错误的相关部分。
  • 缺少哪些符号?请显示完整的链接器错误。

标签: c++ macos qt osx-mavericks


【解决方案1】:

当我在头文件中有原型方法但未在源文件中定义它们,或者如果函数已原型但未定义时,我会收到此错误。确保所有原型函数和类方法都有定义。

【讨论】:

  • 确保所有原型函数和类方法都有定义。这就是问题的答案。这个错误是由于在头文件中声明了一个方法,但没有在源文件中实现它。因此,您应该确保在标头中声明的所有方法都在源文件中实现了定义。转到项目中每个类的源文件并实现您在头文件中声明的所有方法。希望这可以为问题提供足够的答案,而无需澄清。实现所有声明的方法。
  • 删除这篇文章意味着人们将花费数小时试图弄清楚为什么他们会不必要地收到此错误,就像我一样。这是一个简单的解决方法:检查你的项目并确保你已经实现了你在类中声明的所有方法,否则你会得到这个错误。
猜你喜欢
  • 1970-01-01
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
相关资源
最近更新 更多