Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt4] Ошибка скомпилированного приложения. приложение компилируется,но выдаёт ошибк 
:(
    Опции темы
al29
  Дата 7.4.2009, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток!Помогите новичку=) проблемка такая:

Приложение простенькое(прога расчёта S,P,сторон треугольника)...Писал под debian'ом всё нормульно компилировалось.Под виндой,в Qt Creator'e тоже вроде компилируется,но откомпилированная прога выдаёт ошибку: Инструкция по адресу 0x00e4eb6e обратилась к памяти по адресу "0x00000005. память не может быть read. Чтоже это за проблема и как исправить?=)

компиляция
Цитата

Running build steps for project 1...
Creating gdb macros library...
Starting: C:/Qt/4.4.3/bin/qmake.exe C:/Qt/1/1.pro -spec win32-g++ -r CONFIG+=debug_and_release 
Exited with code 0.
Starting: C:/MinGW//bin/mingw32-make.exe debug -w 
C:\MinGW\\bin\mingw32-make.exe: Entering directory `C:/Qt/1'
C:/MinGW/bin/mingw32-make.exe -f Makefile.Debug
mingw32-make.exe[1]: Entering directory `C:/Qt/1'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\4.4.3\include\QtCore" -I"..\4.4.3\include\QtCore" -I"..\4.4.3\include\QtGui" -I"..\4.4.3\include\QtGui" -I"..\4.4.3\include" -I"." -I"c:\Qt\4.4.3\include\ActiveQt" -I"debug" -I"." -I"..\4.4.3\mkspecs\win32-g++" -o debug\main.o main.cpp
In file included from main.cpp:3:
treug.h:25:3: warning: no newline at end of file
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\4.4.3\include\QtCore" -I"..\4.4.3\include\QtCore" -I"..\4.4.3\include\QtGui" -I"..\4.4.3\include\QtGui" -I"..\4.4.3\include" -I"." -I"c:\Qt\4.4.3\include\ActiveQt" -I"debug" -I"." -I"..\4.4.3\mkspecs\win32-g++" -o debug\treug.o treug.cpp
In file included from treug.cpp:2:
treug.h:25:3: warning: no newline at end of file
treug.cpp:95:2: warning: no newline at end of file
C:/Qt/4.4.3/bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\4.4.3\include\QtCore" -I"..\4.4.3\include\QtCore" -I"..\4.4.3\include\QtGui" -I"..\4.4.3\include\QtGui" -I"..\4.4.3\include" -I"." -I"c:\Qt\4.4.3\include\ActiveQt" -I"debug" -I"." -I"..\4.4.3\mkspecs\win32-g++" -D__GNUC__ -DWIN32 treug.h -o debug\moc_treug.cpp
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\4.4.3\include\QtCore" -I"..\4.4.3\include\QtCore" -I"..\4.4.3\include\QtGui" -I"..\4.4.3\include\QtGui" -I"..\4.4.3\include" -I"." -I"c:\Qt\4.4.3\include\ActiveQt" -I"debug" -I"." -I"..\4.4.3\mkspecs\win32-g++" -o debug\moc_treug.o debug\moc_treug.cpp
In file included from debug\moc_treug.cpp:10:
debug\/../treug.h:25:3: warning: no newline at end of file
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\1.exe debug/main.o debug/treug.o debug/moc_treug.o  -L"c:\Qt\4.4.3\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
mingw32-make.exe[1]: Leaving directory `C:/Qt/1'
C:\MinGW\\bin\mingw32-make.exe: Leaving directory `C:/Qt/1'
Exited with code 0.



Application output
Цитата

Starting C:/Qt/1/debug/1.exe...

C:/Qt/1/debug/1.exe exited with code -1073741819


заранее спасибо!!
PM MAIL   Вверх
Remiznik
Дата 7.4.2009, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



хотелось бы код увидеть а то так трудно сообразить ))
PM MAIL   Вверх
al29
Дата 7.4.2009, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Remiznik @ 7.4.2009,  21:18)
хотелось бы код увидеть а то так трудно сообразить ))

подчёркиваю я новичок   smile 

treug.cpp

Цитата

#include <QApplication>
#include "treug.h"
#include "math.h"

Treug::Treug(QWidget *parent):QWidget(parent)
{
lineEditN = new QLineEdit("nomer");
lineEditA = new QLineEdit("znachenie");
lblNote = new QLabel("vvvedite nomer 1-4 i znachenie");
lblResult = new QLabel("          ");

btnGo = new QPushButton("Pusk");

QObject::connect(btnGo, SIGNAL(clicked()), this, SLOT(goClicked()));

QVBoxLayout *vLayout = new QVBoxLayout;
vLayout->addWidget(lblNote);
vLayout->addWidget(lineEditN);
vLayout->addWidget(lineEditA);
vLayout->addWidget(btnGo);
vLayout->addWidget(lblResult);
vLayout->addWidget(btnExit);
setLayout(vLayout);
setWindowTitle("Treugolnik");
}

void Treug::goClicked()
{
double a = lineEditA->text().toInt();
int N = lineEditN->text().toInt();
double h;
double s;
double p;
double b;
switch (N)
{
case 1:
b = a;
h = sqrt((0.75)*b*b);
//h = b*b;
s = b*h/2;
p = b + b + b;

break;
case 2:
b = sqrt(1.33*a*a);
h = a;
s = b*h/2;
p = b + b + b;
break;
case 3:
b = a/3;
h = sqrt(1.33*b*b);
s = b*h/2;
p = a;
break;
case 4:
b = sqrt(4/sqrt(3)*sqrt(a));
h = sqrt(0.75*b*b);
s = a;
p = b + b + b;
break;

}
QString strS, strRes,strH,strB,strP;
strRes = "";

strS.setNum(s);
strRes += strP;

strP.setNum(p);
strRes += strH;

strH.setNum(h);
strRes += strB;

strB.setNum(b);

strRes += "S= "+strS+ ";";
strRes += "P= "+strB+ ";";
strRes += "H="+strH+ ";";
strRes += "P="+strP+ ";";

lblResult->setText(strRes);
}



main.cpp

Цитата

#include <QApplication> 
#include "treug.h"

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Treug *res = new Treug;
res->show();
return app.exec();
}


treug.h
Цитата

#include <QLabel>
#include <QLineEdit>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QPushButton>
#include <QString>
#include <math.h>

class Treug : public QWidget
{
Q_OBJECT

public: Treug(QWidget *parent = 0);
private slots:
    void goClicked();

private:
QLineEdit *lineEditA;
QLineEdit *lineEditN;
QLabel *lblNote;
QLabel *lblResult;

QPushButton *btnGo;
QPushButton *btnExit;
};


PM MAIL   Вверх
Remiznik
Дата 7.4.2009, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



для вывода кода есть специальная функция! пользуйся это удобнее ))

не уверен ! но поробуй добавить деструктор в свой класс .


PM MAIL   Вверх
SABROG
Дата 7.4.2009, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

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



Собирай в дебаге и запускай под отладчиком в QtCreator'e или gdb. Смотри на стек вызовов и определяй на какой строчке идет вылет, обычно это не сложно.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
al29
Дата 7.4.2009, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Remiznik @ 7.4.2009,  21:31)
для вывода кода есть специальная функция! пользуйся это удобнее ))

не уверен ! но поробуй добавить деструктор в свой класс .

ok)) пойду значит изучать дальше что такое деструктор и конструктор,т.к. новичок... хотя код простой... может они тут не нужны??? Подскажите,если не сложно,как они должны выглядеть smile 
PM MAIL   Вверх
Remiznik
Дата 7.4.2009, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



 ваше это неплохо бы знать даже для начала ))

 в Treug.h
Код

 class Treug : public QWidget
{
Q_OBJECT

public: Treug(QWidget *parent = 0);
           ~Treug();
.........


в Treug.cpp
Код

Treug::~Treug()
{
}

PM MAIL   Вверх
SABROG
Дата 7.4.2009, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

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



По-хорошему деструктор должен наследоваться от QWidget, смысла его нет переопределять, если что-то своё не будет в него добавляться.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Remiznik
Дата 7.4.2009, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



можно добавить 
Код

   delete this;


но повтарюсь я не уверен что проблемма имено в этом )
PM MAIL   Вверх
al29
Дата 7.4.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Почитал про деструктор,но он всё равно не помог... ошибка таже....
PM MAIL   Вверх
Remiznik
Дата 7.4.2009, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



значит я был не прав ! извеняюсь )
PM MAIL   Вверх
al29
Дата 7.4.2009, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



пише тещё вот что:

Running build steps for project 1...
Creating gdb macros library...
Starting: C:/Qt/4.4.3/bin/qmake.exe C:/Qt/1/1.pro -spec win32-g++ -r CONFIG+=debug_and_release 
Exited with code 0.
Starting: C:/MinGW//bin/mingw32-make.exe debug -w 
C:\MinGW\\bin\mingw32-make.exe: Entering directory `C:/Qt/1'
C:/MinGW/bin/mingw32-make.exe -f Makefile.Debug
mingw32-make.exe[1]: Entering directory `C:/Qt/1'
mingw32-make.exe[1]: Nothing to be done for `first'.
mingw32-make.exe[1]: Leaving directory `C:/Qt/1'
C:\MinGW\\bin\mingw32-make.exe: Leaving directory `C:/Qt/1'
Exited with code 0.
PM MAIL   Вверх
Любитель
Дата 7.4.2009, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



al29, просьба в следующий раз давать более понятные заголовки темам. А то непонятно даже про какой тулкит речь (добавил Qt4 в название темы).

По сабжу:
1. Зачем выделять память под res динамически? Вылетать из-за этого не будет, просто вопиющие мемори-лики тоже не есть хорошо..
2. Запусти из-под чистого гдб. Криэйтор глючный всё-таки.. Из личной практики - подобный вывод получил при запуске приложения, для которого не была скопирована одна из линкуемых длл-ок (QCA, если быть точным). Ну и в PATH её не было.


--------------------
PM MAIL ICQ Skype   Вверх
Acer
Дата 8.4.2009, 00:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

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



al29, ошибка в этой строке:
Код

vLayout->addWidget(btnExit);

Ты добавляешь в vLayout не созданный обьект.
PM MAIL   Вверх
al29
Дата 8.4.2009, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Acer @ 8.4.2009,  00:01)
al29, ошибка в этой строке:
Код

vLayout->addWidget(btnExit);

Ты добавляешь в vLayout не созданный обьект.

Блин,точно... Спасибо! добавил строчечку
Код
 
btnExit = new QPushButton(QString:: fromLocal8Bit ("Выход"));

и всё заработало...Всем спс!


Это сообщение отредактировал(а) al29 - 8.4.2009, 21:41
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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