Qt 5.2 Mac 10.10.1 架构 x86_64 的未定义符号

Posted

技术标签:

【中文标题】Qt 5.2 Mac 10.10.1 架构 x86_64 的未定义符号【英文标题】:Qt 5.2 Mac 10.10.1 Undefined symbols for architecture x86_64 【发布时间】:2015-02-11 20:46:21 【问题描述】:

我正在我的 mac 计算机上开发 opencv、Qt 应用程序,但是,编译给了我类似

的错误
Undefined symbols for architecture x86_64

我从这里创建了解决方案,Qt5.1/Qt5.2 + Mac OS 10.9 (Mavericks) + XCode 5.0.2, Undefined symbols for architecture x86_64

我改变了 /usr/local/Cellar/qt5/5.3.2/mkspecs/macx-clang/qmake.conf

来自

QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6

QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9

清理项目后,它不起作用,不知道还有什么要改变的?

///// 更新 ////

之前我发现我的默认工具包使用 g++ 作为编译器,现在我更改为 clang 作为默认编译器,你可以在此处查看我的配置 https://www.dropbox.com/s/93viwvf1a70s347/Screenshot%202015-02-13%2002.43.23.png?dl=0

但是什么是连线,错误“架构 x86_64 的未定义符号”仍然存在,并且还有另一个错误说:错误:链接器命令失败,退出代码 1(使用 -v 来查看调用)

怎么了??

/// 更新 ////

#-------------------------------------------------
#
# Project created by QtCreator 2014-06-08T01:54:11
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets webkitwidgets

TARGET = particle_filter
TEMPLATE = app
QT += network

SOURCES += main.cpp\

HEADERS  += \


FORMS    += \
    parkingapp.ui \

#-------------------------------------------------

INCLUDEPATH += /usr/local/Cellar/opencv/2.4.9/include

LIBS += -L/usr/local/Cellar/opencv/2.4.9/lib \
-lopencv_core \
-lopencv_highgui \
-lopencv_imgproc \
-lopencv_video \
-lopencv_objdetect \
-lopencv_ml \
-lopencv_features2d
#-------------------------------------------------

后来我发现了这个http://qt-project.org/forums/viewthread/24551/P15,所以我把它添加到了我的.pro的末尾

LIBS += -stdlib=libc++

QMAKE_CXXFLAGS += -stdlib=libc++
QMAKE_CXXFLAGS += -std=c++11
QMAKE_CXXFLAGS += -mmacosx-version-min=10.9
QMAKE_LFLAGS += -mmacosx-version-min=10.9

但还是不行.... :(

【问题讨论】:

您是否完全删除了构建目录? 嗨,Simon,我尝试删除文件夹并重新构建,但仍然无法正常工作。到目前为止,我只更改了 macx-clang 中的 qmake.conf,它是 QT 的 clang64bit 编译器。但我不确定我是真正使用clang编译器还是g++编译器,这可能是一个问题,你怎么看,我正在尝试这个 当我进入 QT 首选项编译器部分时,我可以看到自动检测到 gcc 32bit、gcc 64 位、clang 32 位、clang 64 位,但是我使用的是哪一个,如何检查哪个编译器我正在使用 你在使用 Qt Creator 吗?您可以在选项卡“[4] 编译”中检查使用了哪个编译器。您可能还需要在 .pro 文件中添加 gist.github.com/webmaster128/d26e2bc1b8ef4d91a459 我正在使用QT creator,我将我的配置快照分享给你,dropbox.com/s/sits5nkqyga0ahc/…,在我看来编译器是g++,所以我更改了macx-clang-32/qmake。 conf,QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9,删除旧版本,添加你在.pro中提到的东西。但仍然无法正常工作 【参考方案1】:
Undefined symbols for architecture x86_64

这意味着编译器无法解析符号的地址。

因此,您需要在专业版中为该符号添加库。文件。

例如,

LIBS += -framework AppKit
LIBS += -framework CoreAudio
LIBS += -framework AudioToolbox

检查您的项目配置库。

【讨论】:

在 Qt Creator 的问题列表中的“Undefined symbols for ...”问题上单击“O”,然后您可以看到编译器输出。它将帮助您解决问题。

以上是关于Qt 5.2 Mac 10.10.1 架构 x86_64 的未定义符号的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt 5.2 中替代 QHttp

黑苹果用户要哭了,苹果打算全部弃用X86架构全用自己的芯片

使用 fontconfig 支持为 Linux x86 构建 Qt

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

优化系列汇编优化技术:X86架构汇编优化及demo

译x86程序员手册15-5.2页转换