编译 Qt 应用程序时架构 x86_64 错误的重复符号

Posted

技术标签:

【中文标题】编译 Qt 应用程序时架构 x86_64 错误的重复符号【英文标题】:duplicate symbols for architecture x86_64 error when compiling Qt application 【发布时间】:2014-09-18 17:59:58 【问题描述】:

我正在尝试使用 Qt creator 在 osx 上编译 Qt 应用程序。应用程序在寡妇中成功编译。但在 mac 中,它会给出以下链接器错误。

2 duplicate symbols for architecture x86_64
linker command failed with exit code 1 (use -v to see invocation)

有人知道如何检查链接器抱怨的重复符号是什么吗?我在 .pro 文件中使用了以下内容,但没有成功。

QMAKE_LFLAGS += -v

【问题讨论】:

请尝试检查 Qt Creator 输出控制台选项卡,并找出确切的 2 个符号重复。这个信息应该在那里。 感谢 N1ghLight。不知道Qt creator中有编译器输出窗口 这可能是您包含了两次.pri 文件。 【参考方案1】:

N1ghtLight 发表评论作为答案。

Duplicate symbols found 错误是链接器错误,表示链接器找到了多个同名符号。以下是造成这种情况的一些常见原因。

您在头文件中编写了函数定义(在 class),包含在两个或多个 cpp 文件中。 您已经定义了两次静态变量。 您在一个 cpp 文件中编写了两次函数定义。

您可以通过查看Qt Creator 中的Compile Output 选项卡来找出重复符号是什么

【讨论】:

【参考方案2】:

就我而言,我在 myproject.pro 文件中添加了重复的标题。

ex) HEADERS += zzzz.h \ 
... a lot of xxxx.h \
zzzz.h (again) 

我删除了重复的zzzz.h并构建成功。

【讨论】:

以上是关于编译 Qt 应用程序时架构 x86_64 错误的重复符号的主要内容,如果未能解决你的问题,请参考以下文章

Mac上的Qt说找不到架构x86_64的符号[重复]

编译时错误“架构 x86_64 的未定义符号”是啥意思?

Xcode 5.1 和架构 x86_64 的编译错误

架构 x86_64 的未定义符号将 QT 与 Opencv 结合使用

Qt5“未找到架构 x86_64 的符号”

Qt + cocoa:架构 x86_64 的未定义符号