Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибки построения Release в VC 2010 Express. [QT] 
V
    Опции темы
alsav22
Дата 25.4.2012, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 13.4.2012

Репутация: нет
Всего: нет



Использую qt-win-opensource-4.8.1-vs2010 с VC 2010 Express. Проект разделён на три файла:
 mainwindow.h
Код

#include <QtGui>
#include <QtCore>
class MainWindow : public QMainWindow
{
    Q_OBJECT
    public:
    explicit MainWindow(QWidget *parent = 0);
};

mainwindow.
Код

#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    QLabel* label=new QLabel(this);
    
    label->setText("Здравствуй, Мир!");
    label->setAlignment(Qt::AlignCenter);
    setCentralWidget(label);
}

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();
 }

После первого построения (с ошибками), в файлы исходного кода добавляется: moc_mainwindow.h.cpp, который создаётся moc , для чего в Свойста проекта, Все конфигурации, События постороения, Событие перед постороением, Командная строка, добавленно: 
Код

moc -o moc_mainwindow.h.cpp mainwindow.h

Построение Debug нормально проходит. Если Release, то:
Код

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 ==========

Если для Release в Свойствах проекта, Компоновка, Ввод, Игнорировать все стандартные библиотеки - прописать: msvcrtd.lib, то:
Код

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 ==========

Причину нашёл. Ошибка появляется, если в Свойстах проекта, Все конфигурации, Компоновщик, Система, Подсистема прописана Windows. На Debug это никак не отражается, а при Release появляются описанные выше ошибки. Если для Release выставить Консоль или Не задано, тогда ошибок нет, но при запуске приложения открывается окно консоли, которое мне совершенно не нужно. 
 Как можно сделать, чтобы и ошибок не было и консоль не открывалась?
PM MAIL   Вверх
alsav22
Дата 27.4.2012, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 13.4.2012

Репутация: нет
Всего: нет



Решение такое. Подключить заголовочный файл  
Код
#include <Windows.h>
 Вместо  
Код

int main(int argc, char **argv)
 написать 
Код
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpcmdline, int ncmdshow)
 Вместо 
Код
QApplication app(argc, argv);
 написать 
Код
QApplication app(ncmdshow, (char **)lpcmdline);
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0617 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.