在code :: blocks中使用Qt 5.1.1时出错

时间:2013-10-07 13:37:23

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

我正在尝试在我的win7 32bit上结合Code :: Blocks IDE和Qt 5.1.1。在CB中我使用MinGW的g ++编译器,它支持C ++ 0x 我下载了“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”的工具。
带有可执行文件“D:\ Qt-library \ _ 5.1.1 \ mingw48_32 \ bin \ qmake.exe”的“qmake -project”,参数:“ - project -platform win32-g ++”
具有Excutable的“qmake”与“qmake -project”相同,没有参数;
使用Excutable“D:\ Qt-library \ Tools \ mingw48_32 \ bin \ mingw32-make.exe”“make”,无参数
工作目录全部设置为“$ {PROJECT_DIR}”

我点击了project->属性,选择了“这是一个自定义Makefile”

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

    #include <QApplication>

而不是

    #include <QtGui/QApplication>

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

    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版本无效)

然后点击“工具”菜单中的“制作”,我收到两个错误:
qMain error

我不知道到底是怎么回事,但有些我如何修改我的主要功能 int main(int argc, char** argv)int qMain(int argc, char** argv)。然后重新制作,两个qMain错误消失但我得到了这个: permission denied error

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

    #include <QApplication>

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

另一件事非常奇怪,我在.pro文件中添加了CONFIG += debugCONFIG -= release,qmake将生成Makefile.Debug和Makefile.Release(无论CONFIG或调试和释放是uper还是小写),但生成的.o文件和.exe文件都在发布目录中,没有调试文件,为什么会这样?

任何人都有任何想法?我非常感谢你的建议。

1 个答案:

答案 0 :(得分:0)

问题解决了(尽管并不完美)。

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

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