Qt5 和 MacOS X

Posted

技术标签:

【中文标题】Qt5 和 MacOS X【英文标题】:Qt5 and MacOS X 【发布时间】:2015-02-03 17:26:05 【问题描述】:

我已经从 MacPorts 在我的 Mac OS X Yosemite 上安装了 Qt5。 如果我编译这个简单的文件

#include <QtGui>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>

int main(int argc, char **argv)

    QApplication app(argc, argv);
    QLabel lbl("Hello World!");
    lbl.show();
    return app.exec();

我会出错

Undefined symbols for architecture x86_64:
  "QApplication::exec()", referenced from:
      _main in main.o
  "QApplication::QApplication(int&, char**, int)", referenced from:
      _main in main.o
  "QApplication::~QApplication()", referenced from:
      _main in main.o
  "QLabel::QLabel(QString const&, QWidget*, QFlags<Qt::WindowType>)", referenced from:
      _main in main.o
  "QLabel::~QLabel()", referenced from:
      _main in main.o
  "QWidget::show()", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [123.app/Contents/MacOS/123] Error 1

我换了QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.9QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.10 在文件/opt/local/share/qt5/mkspecs/macx-clang/qmake.conf 但它没有结果。

【问题讨论】:

你安装了 64bit qt 吗? (有没有可能?) 我已经通过“sudo port install qt5-mac”安装了。我想,它是 64 位的。 你能显示链接器命令吗? 【参考方案1】:

如果没有更多信息,很难确切知道,但请检查您是否在 .pro 文件中添加了小部件:

QT       += gui core
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

如果您不使用 qtcreator,您可能必须显式运行 qmake。另外,您不会显示主窗口而不是 QLabel 吗?我还没有检查这是否是合法可行的代码,但也许你应该开始显示一个主窗口并首先验证它是否有效。 QTCreator 有一个新的Qt Widgets Application 的项目模板。还要检查 macports 是否正在安装最新的 qt5 版本,以防它是错误的路径或配置。

【讨论】:

以上是关于Qt5 和 MacOS X的主要内容,如果未能解决你的问题,请参考以下文章

Macos运行Qt5的相关总结

Macos运行Qt5的相关总结

PySide 安装错误 - python 2.7 - QT5 - macOS Sierra

QT5下的QPushButton错误,同时在macos上推送到全屏

补丁版本 LTS Qt 5.15.9 商业版发布

如何使用 Macports 包管理器删除 libexec/qt4 和 libexec/qt5?