【问题标题】:Error using Qt 5.1.1 in code::blocks在 code::blocks 中使用 Qt 5.1.1 时出错
【发布时间】:2025-12-03 03:45:01
【问题描述】:

我正在尝试在我的 win7 32 位上结合 Code::Blocks IDE 和 Qt 5.1.1。在 CB 中,我使用支持 C++0x 的 MinGW 的 g++ 编译器。
我下载了“qt-windows-opensource-5.1.1-mingw48_opengl-x86-offline.exe”并安装在“D:\Qt-library\5.1.1\mingw48_32\”。

然后在 CB 中,我在 Tools->Configure tools->add 添加了三个名为“qmake -project”、“qmake”和“make”的工具。
“qmake -project”,可执行文件“D:\Qt-library\5.1.1\mingw48_32\bin\qmake.exe”,参数:“-project -platform win32-g++”
“qmake”的可执行文件与“qmake -project”相同,无参数;
带有可执行文件“D:\Qt-library\Tools\mingw48_32\bin\mingw32-make.exe”的“make”,无参数
工作目录全部设置为“${PROJECT_DIR}”

然后我点击项目->属性,选择“这是一个自定义的 Makefile”

然后我点击上面创建的工具菜单中的“qmake -project”菜单项,qmake 生成了一个 .pro 文件。
因为我用

    #include <QApplication>

而不是

    #include <QtGui/QApplication>

在 main.cpp 文件中,所以我在 .pro 文件中添加了“QT += widgets”。
然后点击工具菜单中的“qmake”,生成makefile。如果我直接make,是编译不了的,因为它不支持一些C++11的语法,
所以我编辑了Makefile.Debug和makefile.Release,它看起来像:

    CC            = gcc
    CXX           = g++
    DEFINES       = -DUNICODE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN
    CFLAGS        = -pipe -fno-keep-inline-dllexport -O2 -Wall -Wextra $(DEFINES)
    CXXFLAGS      = -pipe -fno-keep-inline-dllexport -O2 -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES)

我在 CXXFLAGS 行添加了 -std=c++0x,所以它变成了

    CXXFLAGS      = -pipe -std=c++0x -fno-keep-inline-dllexport -O2 -frtti -Wall -Wextra -fexceptions -mthreads $(DEFINES)

(如果我使用 -std=c++11,它将不适用于我的 MinGW 版本)

然后点击工具菜单中的“make”,出现两个错误:

我不知道那到底是什么,但我知道我是如何修改我的主要功能的 int main(int argc, char** argv)int qMain(int argc, char** argv)。然后再次make,两个qMain错误消失了,但我得到了这个:

而现在,我什么都没做,再次make,那个错误消失了!!! 但是生成的 .exe 文件不会做任何事情,无论是双击还是在命令行中运行,都不会发生任何事情(顺便说一下,虽然我包含了,但我没有编写任何 Qt 代码) 如果我删除

    #include <QApplication>

并以正常方式构建项目(取消“这是自定义Makefile”并直接构建),我的程序运行良好。

还有一点很奇怪,我在.pro文件中添加了CONFIG += debugCONFIG -= release,qmake会同时生成Makefile.Debug和Makefile.Release(无论CONFIG或者debug和release都是大写还是小写),但是生成.o文件和.exe文件都在release目录下,没有debug文件,这是为什么呢?

有人有什么想法吗?非常感谢您的建议。

【问题讨论】:

    标签: c++ qt ide development-environment codeblocks


    【解决方案1】:

    问题解决了(虽然不完美)。

    事实是程序确实做了一些事情,但不知何故没有出现控制台窗口(在我添加 Qt 标头之前,我用 C++ 编写了程序并使用 cout 打印消息),因此看不到输出,即使我在控制台中运行程序。我通过编写一个简单的 Qt GUI 程序来打印结果发现了这一点,它可以工作。但我不知道为什么控制台不会出现包含 QApplication 但程序中没有 Qt 代码的原因(无论我设置项目-> 属性-> 构建目标-> 选择构建目标选项-> 类型为 GUI 或控制台) .

    另一方面,我可以通过双击调试目录中的.exe文件来运行Qt GUI程序,但在Code::Blocks中却没有,它弹出“在动态链接库上找不到程序入口InterlockedCompareExchange@12 libstdc++-6.dll”。因此无法通过CB调试程序。

    【讨论】: