Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
#1

Ошибка при построении Release в VC 2010 Express. - C++

24.04.2012, 22:53. Просмотров 1784. Ответов 1
Метки нет (Все метки)

Использую qt-win-opensource-4.8.1-vs2010 с VC 2010 Express. Проект разделён на три файла:
mainwindow.h
C++
1
2
3
4
5
6
7
8
#include <QtGui>
#include <QtCore>
class MainWindow : public QMainWindow
{
    Q_OBJECT
    public:
    explicit MainWindow(QWidget *parent = 0);
};
mainwindow.cpp
C++
1
2
3
4
5
6
7
8
9
10
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    QLabel* label=new QLabel(this);
    
    label->setText("Здравствуй, Мир!");
    label->setAlignment(Qt::AlignCenter);
    setCentralWidget(label);
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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 , для чего в Свойста проекта, Все конфигурации, События постороения, Событие перед постороением, Командная строка, добавленно:
C++
1
moc -o moc_mainwindow.h.cpp mainwindow.h
Построение Debug нормально проходит. Если Release, то:
C++
1
2
3
4
5
6
7
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, то:
C++
1
2
3
4
5
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 выставить Консоль или Не задано, тогда ошибок нет, но при запуске приложения открывается окно консоли, которое мне совершенно не нужно.
Как можно сделать, чтобы и ошибок не было и консоль не открывалась?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2012, 22:53     Ошибка при построении Release в VC 2010 Express.
Посмотрите здесь:
Проблемы с кодировкой при переключении из Debug в Release в MSVS 2010 C++
Ошибка в Visual Studio 2010 Express C++
При переводе программы с VS c++ 6.0 на VS c++ 2010 express выходят ошибки, как их исправить? C++
C++ Ошибка при построении
Ошибка при построении C++
C++ Ошибка при построении графиков
C++ Ошибка C2678 при построении
C++ Ошибка при построении архитектуры if-else
Ошибка при построении релиза проекта C++
Microsoft Visual C++ 2010 Express - не компилируются приложения. Ошибка "Не удаётся найти файл" C++
C++ VC++6.0/ATL - ошибка сборки в режиме Release при исп.функций из math.h
C++ Ошибка при установке Visual C++ Express

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.04.2012, 22:21  [ТС]     Ошибка при построении Release в VC 2010 Express. #2
Решение. Подключить заголовочный файл
C++
1
#include <Windows.h>
.
Вместо
C++
1
int main(int argc, char **argv)
написать:
C++
1
2
int WINAPI WinMain(HINSTANCE hInstance,
  HINSTANCE hPrevInstance, LPSTR lpcmdline, int ncmdshow)
. Вместо
C++
1
QApplication app(argc, argv);
написать:
C++
1
QApplication app(ncmdshow, (char **)lpcmdline);
.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru