使用MinGW-w64在Windows下编译Qt5 hello world .cpp文件会出现“未定义的引用”错误

时间:2016-06-28 18:10:40

标签: c++ windows qt makefile cmake

当我运行make来编译由cmake生成的Makefile时,为了编译Qt5应用程序的hello world示例,编译失败并出现以下错误:

enter image description here

为什么编译失败?

(我正在努力遵循的具体细节)

我在Windows 10下,使用从Qt official website下载的Qt5.5二进制文件,mingw-w64 gccg++WinBuilds一起发送,{{1从official website下载并随cmake一起安装的v3.6。

我正在尝试编译Qt5's official wiki中提供的以下hello world测试文件:

Windows win64-x64 Installer

使用命令#include <QCoreApplication> int main(int argc, char *argv[]) { QCoreApplication app (argc, argv); return app.exec(); } 从包含.cpp文件的目录中名为cmake -G "MinGW Makefiles" ..的文件夹中成功构建Makefile。使用了以下CMakeLists.txt文件(取自Qt5's cmake wiki page,并添加了CMAKE_PREFIX_PATH变量的规范,这是SO post中讨论的所必需的):

build

(我没有使用Qt5附带的cmake,因为它不起作用)。

现在,当我在cmake生成的Makefile上运行cmake_minimum_required(VERSION 2.8.11) SET(CMAKE_C_COMPILER C:/WinBuilds/bin/x86_64-w64-mingw32-gcc-4.8.3.exe) SET(CMAKE_CXX_COMPILER C:/WinBuilds/bin/x86_64-w64-mingw32-g++-4.8.3.exe) project(testproject) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) #set(CMAKE_PREFIX_PATH "C:/WinBuilds/lib64/cmake") set(CMAKE_PREFIX_PATH "C:/Qt/5.5/mingw492_32/lib/cmake") find_package(Qt5Widgets) add_executable(testfile WIN32 test.cpp) target_link_libraries(testfile Qt5::Widgets) (或更确切地说,make,再次附带WinBuilds)时,会出现问题。 当我这样做时,编译失败并出现以下错误(上面的屏幕截图中显示了相同的错误):

mingw32-make

为什么编译失败?

在另一个SO question中报告了类似的未定义引用错误,但原因似乎与当前案例不同。

1 个答案:

答案 0 :(得分:2)

问题是当您尝试构建64位Qt应用程序时,您正在使用32位mingw编译的Qt二进制文件。您需要使用使用mingw编译的64位Qt二进制文件才能工作。