A
alsav22
Использую qt-win-opensource-4.8.1-vs2010 с VC 2010 Express. Проект разделён на три файла:
mainwindow.h
mainwindow.cpp
После первого построения (с ошибками), в файлы исходного кода добавляется: moc_mainwindow.h.cpp, который создаётся moc , для чего в Свойста проекта, Все конфигурации, События постороения, Событие перед постороением, Командная строка, добавленно:
Построение Debug нормально проходит. Если Release, то:
Если для Release в Свойствах проекта, Компоновка, Ввод, Игнорировать все стандартные библиотеки - прописать: msvcrtd.lib, то:
Ошибка появляется, если в Свойстах проекта, Все конфигурации, Компоновщик, Система, Подсистема прописана Windows. На Debug это никак не отражается, а при Release появляются описанные выше ошибки. Если для Release выставить Консоль или Не задано, тогда ошибок нет, но при запуске приложения открывается окно консоли, которое мне совершенно не нужно.
Как можно сделать, чтобы и ошибок не было и консоль не открывалась?
mainwindow.h
C++:
#include <QtGui>
#include <QtCore>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
};
C++:
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
QLabel* label=new QLabel(this);
label->setText("Здравствуй, Мир!");
label->setAlignment(Qt::AlignCenter);
setCentralWidget(label);
}
C++:
main.cpp
#include "mainwindow.h"
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251"));
MainWindow w;
w.resize(600,350);
QPushButton cmd("ADD");
cmd.show();
w.show();
QObject::connect(&cmd, SIGNAL(clicked()), &app, SLOT(quit()));
return app.exec();
}
C++:
moc -o moc_mainwindow.h.cpp mainwindow.h
Построение Debug нормально проходит. Если Release, то:
C++:
1>------ Построение начато: проект: Qt5, Конфигурация: Release Win32 ------
1> mainwindow.cpp
1> moc_mainwindow.h.cpp
1>qtmaind.lib(qtmain_win.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "2" не соответствует значению "0" в main.obj
1>MSVCRT.lib(cinitexe.obj) : warning LNK4098: библиотека по умолчанию "msvcrtd.lib" противоречит использованию других библиотек; используйте параметр /NODEFAULTLIB:library
1>D:\MY C++Projects\Qt5\Release\Qt5.exe : fatal error LNK1319: обнаружено несоответствий: 1
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
C++:
1>------ Построение начато: проект: Qt5, Конфигурация: Release Win32 ------
1> moc_mainwindow.h.cpp
1>qtmaind.lib(qtmain_win.obj) : error LNK2038: обнаружено несоответствие для "_ITERATOR_DEBUG_LEVEL": значение "2" не соответствует значению "0" в main.obj
1>D:\MY C++Projects\Qt5\Release\Qt5.exe : fatal error LNK1319: обнаружено несоответствий: 1
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Как можно сделать, чтобы и ошибок не было и консоль не открывалась?