Ошибка использования Qt 5.1.1 в code :: blocks

0

Я пытаюсь комбинировать Code :: Blocks IDE и Qt 5.1.1 на моем win7 32bit. В CB я использую компилятор MinGW g++, который поддерживает С++ 0x.
Я загрузил "qt-windows-opensource-5.1.1-mingw48_opengl-x86-offline.exe" и установлен в "D:\Qt-library\5.1.1\mingw48_32 \".

Затем в CB я добавил три инструмента с именем "qmake -project", "qmake" и "make" в Tools-> Configure Tools-> add.
"qmake -project" с исполняемым файлом "D:\Qt-library\5.1.1\mingw48_32\bin\qmake.exe", Параметры: "-project -платформа win32- g++"
"qmake" с Excutable, как "qmake -project", без параметра;
"make" с Excutable "D:\Qt-library\Tools\mingw48_32\bin\mingw32-make.exe", без параметра
Рабочий каталог все установлен на "$ {PROJECT_DIR}"

И я нажал project-> свойства, выбранные "Это пользовательский Makefile",

Затем я щелкнул пункт меню "qmake -project" в меню "Сервис", которое я создал, как указано выше, qmake сгенерировал файл.pro.
Потому что я использую

    #include <QApplication>

вместо

    #include <QtGui/QApplication>

в файле main.cpp, поэтому я добавил "QT + = widgets" в.pro файл.
Затем нажмите "qmake" в меню "Сервис", создайте make файлы. Если я сделаю прямо, он не будет компилироваться, потому что он не поддерживает некоторые С++ 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)

Я добавил -std = С++ 0x в строке CXXFLAGS, поэтому он становится

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

(он не будет работать для моей версии MinGW, если я использую -std = С++ 11)

Затем нажмите "make" в меню "Сервис", я получу две ошибки:
Изображение 174551

Я не знаю, что, черт возьми, это, но некоторые, как я изменил свою основную функцию от int main(int argc, char** argv) до int qMain(int argc, char** argv). Затем сделайте еще раз, две ошибки qMain исчезли, но я получил следующее: Изображение 174551

И теперь я ничего не делал, делаю еще раз, эта ошибка исчезла !!! Но сгенерированный файл.exe ничего не сделает, либо дважды щелкните или запустите в командной строке, ничего не произойдет (кстати, хотя я и включил, я не писал Qt-код). Если я удалю

    #include <QApplication>

и создать проект обычным способом (отмените "Это настраиваемый Makefile" и создайте напрямую), моя программа идет хорошо.

Еще одна вещь очень странная, я добавил CONFIG += debug и CONFIG -= release в.pro файле, qmake будет генерировать как Makefile.Debug, так и Makefile.Release (независимо от того, какой CONFIG или отладка и релиз являются более строгими или строчными), но сгенерированы. o файлы и.exe файлы находятся в папке выпуска, без файла отладки, почему?

У кого-нибудь есть идеи? Я буду очень благодарен за ваши предложения.

Теги:
qt
ide
codeblocks
development-environment

1 ответ

0
Лучший ответ

Проблема решена (хотя и не совсем).

Дело в том, что программа что-то сделала, но каким-то образом не появляется консольное окно (до того, как я добавляю заголовок Qt, я написал программу в C++ и использовал cout для печати сообщений), поэтому выход не может быть просмотрен, даже если я запускаю программа в консоли. Я нашел это, написав простую программу Qt GUI для печати результатов, она работает. Но я не знаю, почему консоль не появлялась с включенным QApplication, но в программе не было Qt-кода (независимо от того, что я установил project-> properties-> build targets-> select build target options-> type to GUI или консоль).

С другой стороны, я могу запустить программу Qt GUI, дважды щелкнув файл.exe в каталоге отладки, но не в Code :: Blocks, он появляется "не удается найти запись в программе InterlockedCompareExchange @12 в библиотеке динамических ссылок libstd [CN10 ] -6.dll". Таким образом, я не могу отлаживать программу через CB.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню