【问题标题】:C++ Qt: undefined reference to `_imp___ZN12QApplicationC1ERiPPci'C++ Qt:未定义引用`_imp___ZN12QApplicationC1ERiPPci'
【发布时间】:2013-08-15 19:50:26
【问题描述】:

我试图提醒自己一些 C++,并了解 Qt。

我在 Windows 上工作。我已经安装了 Qt (5.1.0)、MinGW (g++ 4.6.2)、Gnu Make (3.81)。

我正在尝试编译一个简单的 Qt 应用程序。最基本的情况是这样的:

#include <QtWidgets>
#include <QtGui>

int main (int argc, char* argv[]) {               
    QApplication app(argc, argv);                  
    QTextStream cout(stdout);                               
    return EXIT_SUCCESS;
}

项目文件为:

TEMPLATE = app
TARGET = example1
INCLUDEPATH += .

# Input
SOURCES += fac1.cpp
QT += gui widgets core

当我跑步时

qmake

它生成 Makefile。

但是用make 我明白了:

C:\src\early-examples\example1>make
make -f Makefile.Release
make[1]: Entering directory `C:/src/early-examples/example1'
g++ -Wl,-s -Wl,-subsystem,console -mthreads -o release\example1.exe release/fac1.o  -LC:\Qt\Qt5.1.0\\5.1.0\msvc2012_64\lib -lQt5Widgets -lQt5Gui -lQt5Core -llibEGL -llibGLESv2 -lgdi32 -luser32
release/fac1.o:fac1.cpp:(.text.startup+0x2e): undefined reference to `_imp___ZN12QApplicationC1ERiPPci'
release/fac1.o:fac1.cpp:(.text.startup+0x37): undefined reference to `_imp___ZN12QApplicationD1Ev'
collect2: ld returned 1 exit status
make[1]: *** [release\example1.exe] Error 1
make[1]: Leaving directory `C:/src/early-examples/example1'
make: *** [release] Error 2

你能告诉我有什么问题吗?

【问题讨论】:

  • 看起来你在这里混合编译器。为什么要使用带有 gcc 的 Visual Studio 库?
  • 我正在尝试使用 g++,但可能有一些我不知道的设置/环境变量。你怎么知道?
  • 或者你是说我必须使用Visual Studio才能使用Qt?
  • 您发布的输出中有“-LC:\Qt\Qt5.1.0\\5.1.0\msvc2012_64\lib”。
  • 是的。你应该有一个 mingw 版本。

标签: c++ qt


【解决方案1】:

这里的问题是您似乎在为您的 mingw 构建使用 Visual Studio 2012 库。您需要链接到 mingw 编译的 Qt。

【讨论】:

  • 是的。我下载了(来自qt-project.org/downloads)用于 Windows 64 位(VS 2012,525 MB)的 Qt 5.1.0,而不是用于 Windows 32 位(MinGW 4.8,OpenGL,666 MB)的 Qt 5.1.0。现在工作正常!
  • 这就是为什么有这么多 Qt 二进制版本的下载的原因。即使混合不同的 Visual Studio 版本也会给您带来问题。
【解决方案2】:

将“greaterThan(QT_MAJOR_VERSION, 4): QT += widgets”添加到您的 .pro 文件中

【讨论】:

    猜你喜欢
    • 2013-03-21
    • 2010-11-11
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    相关资源
    最近更新 更多