странно, написал программу, у меня на компе работает хорошо, а на других компах вылетает...
все библиотеки закинул в папку к экзэшнику... на моем компе экзэшник работает прерастно у меня вида 7 стоит, другу отправил, он на ХР запустил и капец... говорит вылетает...
в чем может быть косяк?
вот так выглядит мэйн
#include <QApplication>
#include <QTextCodec>
#include <QtGui>
#include "mainWindow.h"
void loadModules(QSplashScreen* psplash)
{
QTime time;
time.start();
for (int i = 0; i<100;)
{
if(time.elapsed() > 20)
{
time.start();
++i;
}
psplash->showMessage("Loading modules: "
+QString::number(i)+"%",
Qt::AlignHCenter | Qt::AlignBottom,
Qt::black
);
}
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QSplashScreen splash(QPixmap(":/images/qw.png"));
splash.show();
loadModules(&splash);
//===============for support UTF-8=====================================
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
mainWindow *window = new mainWindow;
splash.finish(window);
window->show();
return app.exec();
}
разница видимо в неодинаковой ширине данных у бинаря - 32 и 64 бита (Вин 7 ведь 64-х битная).
получается то что я на семерке написал работать на других операционках не будет?? тогда же в чем кросплатформенность Qt? это можно как нибудь исправить?
я до этого вообще ни разу не пробывал на других операционках, а тут другу отправил чтобы поглядел, она взяла и вылетать на ХР начала, сейчас завел на своем компе ХР и та же хрень, вылетает ГУИ... сначала загрузка идет нормально(картинка и бегущие проценты - ну это для вида), а как ГУИ начинает запускаться то вылетает... пипец... что теперь с этим делать... писал на Qt creator февральского выпуска, по моему самая последняя и такая жопа, раастроился капец...
вот тут вот советуют что то, но я энглишом не очень владею, так что не могу понять что есть где)
http://www.prog.org.ru/index.php?topic=13114.msg84960;topicseen
http://doc.trolltech.com/4.6/deployment-windows.html
я так понял что тут описано как сделать не динамические библиотеки а статические) кто нить этим уже занимался? я раз попробывал и вообще весь креатор запарол, пришлось переустанавливать... и у меня libcurl приделана к креатору, блин... наверное капец как сложно будет все это замутить...
а разве Qt не кросплатформенна?)
видимо придется пробывать по ХР... блин, ну под семеркой же нормально работает, вообще без проблем - разве это не значит что в коде все хорошо?
ну вообще где то на форумах)) я даже не заморачивался над этим))
mainWindow *window = new mainWindow;
да нет, я дезайнером не пользуюсь))) у меня полностью кодом нафигачено)))
ща попробую под ХР собрать и выложу код)
mainWindow::mainWindow(QMainWindow *parent)
: QMainWindow(parent)
{
mainWidget = new QWidget(this);
setCentralWidget(mainWidget);
//======================actions====================================
createActions();
createMenu();
createToolBar();
createStatusBar();
//=======================buttons==========
start = new QPushButton(tr("&Cтарт"));
start->setFont(QFont("Times", 10, QFont::Bold));
start->setFixedWidth(70);
clear = new QPushButton(tr("Очистить"));
clear->setFont(QFont("Times", 10, QFont::Bold));
clear->setFixedWidth(70);
stop = new QPushButton(tr("Стоп!"));
stop->setFont(QFont("Times", 10, QFont::Bold));
stop->setFixedWidth(70);
//====================massege area===================
//====================label=============
lineText1 = "Процесс выполнения программы: ";
labelText = new QLabel(lineText1);
labelText->setFont(QFont("Times", 10, QFont::AnyStyle));
Messages = new QLabel("Укажите сколько циклов должно пройти");
Messages->setFont(QFont("Times", 10, QFont::AnyStyle));
send = new QLabel(".... ");
send->setFont(QFont("Times", 10, QFont::AnyStyle));
send->minimumSizeHint();
messages = new QLabel("...");
messages->setFont(QFont("Times", 10, QFont::AnyStyle));
messages->setMinimumSize(messages->sizeHint());
howMatch = new QLabel;
howMatch->setFixedWidth(35);
lcd = new QLCDNumber;
lcd->setSegmentStyle(QLCDNumber::Flat);
//===================text_area==============
text = new QTextEdit;
view = new QWebView;
//view->setStyle(QSty);
//reply = new QNetworkReply;
//====================spinBox=============================
spinbox = new QSpinBox;
spinbox->setRange(0, 10000);
spinbox->setFixedWidth(70);
howMatchMessages->setBuddy(spinbox);
//==============connects===============
connect(start, SIGNAL(clicked()), this, SLOT(Start()));
connect(clear, SIGNAL(clicked()), this, SLOT(Clear()));
connect(stop, SIGNAL(clicked()), this, SLOT(Stop()));
//connect(text, SIGNAL(textChanged(const QString &)), this, SLOT(enableStart(const QString &)) );
connect(spinbox, SIGNAL(valueChanged(int)), this, SLOT(SpinBox(int)));
QHBoxLayout *layoutHH = new QHBoxLayout;
layoutHH->addWidget(Messages);
layoutHH->addWidget(spinbox);
layoutHH->addStretch();
QHBoxLayout *layoutH = new QHBoxLayout;
layoutH->addWidget(start);
layoutH->addWidget(stop);
layoutH->addWidget(clear);
layoutH->addStretch();
QVBoxLayout *layoutVV = new QVBoxLayout;
layoutVV->addWidget(labelText);
layoutVV->addWidget(view);
QHBoxLayout *layoutHHH = new QHBoxLayout;
layoutHHH->addWidget(send);
layoutHHH->addWidget(lcd);
layoutHHH->addWidget(messages);
layoutHHH->addStretch();
QVBoxLayout *mainLayout = new QVBoxLayout(mainWidget);
//mainLayout->addLayout(layoutV);
mainLayout->addLayout(layoutHH);
mainLayout->addLayout(layoutH);
mainLayout->addLayout(layoutVV);
mainLayout->addLayout(layoutHHH);
setLayout(mainLayout);
//=====================Установка иконки и названия главного окна==================
setWindowTitle(tr("..."));
setWindowIcon(QIcon(":/images/el.png"));
setMinimumSize(900, 600); //минимальный размер окна
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLCDNumber>
#include <QtNetwork>
class QWebView;
class QSpinBox;
class QLabel;
class QLineEdit;
class QPushButton;
class QTextEdit;
class mainWindow : public QMainWindow
{
Q_OBJECT
public:
mainWindow(QMainWindow *parent = 0);
QList<QString> list;
private:
QWebView *view;
QWidget *mainWidget;
void createMenu();
void createToolBar();
void createActions();
void createStatusBar();
void makeFunktion();
QMenu *fileMenu;
QMenu *helpMenu;
QToolBar *fileToolBar;
QToolBar *aboutToolBar;
QAction *openAction;
QAction *aboutAction;
QAction *stopAction;
QAction *findAction;
QNetworkReply *reply;
QLCDNumber* lcd;
QLabel *labelLine;
QLabel *labelText;
QLabel *howMatch;
QLabel *howMatchMessages;
QLabel *statusLabel;
QPushButton *start;
QPushButton *clear;
QPushButton *stop;
QSpinBox *spinbox;
QString lineText1;
QString openFile;
int spinBoxInt;
private slots:
void open();
void SpinBox(int);
void Clear();
void Start();
void Stop();
void enableStart(const QString &text);
void about();
};
#endif // MAINWINDOW_H
начни с простого, комментируй по одной функции в конструкторе:
createActions();
createMenu();
createToolBar();
createStatusBar();
блин, под ХР тот же креатор начал ругаться на #include <c++/string>
в чем прикол не пойму...
mingw
блин собрал прогу под ХР и вылекатает гадина... ну под семеркой же работала... капец полный...
пишет так
приложение остановлено так как оно получило сигнал от операционной системы
сигнал: SIGSEGV
назначение sigmentation fault
тебе нужно с помощью GDB обратную трассировку выполнить
это как?) что такое GDB?
главное в чем прикол, прога у меня была собрана в дебаге и в релизе
дебаговский экзышник сейчас запустил и работает, а релиз нифига))
Таким макаром:
gdb myapp.exe
gdb> run
... программа упадет
gdb> backtrace
нифига не въеду и половина прог релиза работают написаны были с одинаковым интерфейсом, там отличие вообще в пару строк... вообще хрень какая то...
понятно, спасибо буду пробывать)
ну я всего то дабавил web kit в код программы))) сейчас покажу что
добавил инклуд
#include <QtWebKit>
из этого кита использую только это
view = new QWebView;
view->setHtml(ddd); //в ddd html код, загруженный курлом
view->load(QUrl("http://ya.ru")); //и вот это в завершении просто для того чтобы как браузер открыл яндекс
попробуй полностью пересобрать:
make distclean
qmake <обязательно имя файла проекта>
make
спасибо. сегодня буду пробывать))
вот это make distclean чистиет чтото??
сделал все, не помогло...
как не странно, я даже скомпилировать не могу этот проект под ХР, ругается на что то, но это точно траблы не в коде... вот уж не ожидал такого... уже второй день никак разобраться не могу... сейчас новый креатор ставлю, посмотрим что он выдаст...
а как удалить все настройки креатора который я удалил и на его месте поставил новый? а то новый сразу принемает те же настройки....
в консоли
я еще и все файлы с расширением .о удалил из проекта.
теперь вообще круть поперла, начинаю компилировать проект, комп ревет аж, посмотрел в диспетчере задачь, там мингв32 один за другим запускаются и все больше и больше... их там чуть ли не до сотни дошло, пришлось аварийно перезагружаться))
блин и новый креатор ставлю, он остается с прежними параметрами))) просто зашибись... и удалить не знаю как...
я три раза перегружал)) главное запускаю компиляцию и началось, тут же вырубаю, завожу все заново и снова запускаю проект и снова... и главное не успеваю в диспетчере процесс скинуть потому что пока я один сбрасываю, вылазиет три новых))) вот уж головная боль на голову )))))))
вот так:
c:/workspace/proga> make distclean ?????????????
я в CMD почти ничего и не делал ни рузу)
в дебаге вот на это начинает ругаться
0x6a2c3e93 mov 0x4(%ecx),%eax
eldar85,
если ты добавил в проект QtWebKit модуль, то просто обязан в файл проекта добавить QT+=webkit иначе программа не слинкуется. по моему это твой случай, тыже говоришь что в готовый проект добавил 2 строчки и получил проблемы.
читай о корректном добавлении модулей qt в программу в ассистенте и покажи ошибки сборки проекта.
П.С.
и судя по твоим проблемам и ошибкам, оставь пока creator в покое, разберись как создать проект в консоли, как собрать/персобрать программу и проч и проч.
а ну про эту строчку я не забыл))
вот код .pro файла
SOURCES += main.cpp \
mainWindow.cpp
HEADERS += mainWindow.h \
as_curl.h
LIBS += -L$(MINGW_LIB) \
-lcurl \
-lcurldll
RESOURCES = icon.qrc
QT += network
QT += webkit
да и в своей винде я встречаю проблему вылет программы только в отладке, если просто линковать то она работает)
в отладчике пробуешь, там показывает на эту проблему не понятную.
и на ХР не работает.
отладчик вообще указывает на косяк QtGuid4.dll QtCore4.dll которые я к экзэшнику закинул))
там просто к ним путь прописан и они у меня закинуты по этому пути) я так уже давно использую эти библиотеки и никаких проблем еще с этим не было)))
вроде отладчик на QLayout ругается. разве в mainWindow.cpp я не правельно расположил лайауты?
QHBoxLayout *layoutHH = new QHBoxLayout;
layoutHH->addWidget(howMatch);
layoutHH->addWidget(spinbox);
layoutHH->addStretch();
QHBoxLayout *layoutH = new QHBoxLayout;
layoutH->addWidget(start);
layoutH->addWidget(stop);
layoutH->addWidget(clear);
layoutH->addStretch();
QVBoxLayout *layoutVV = new QVBoxLayout;
layoutVV->addWidget(labelText);
layoutVV->addWidget(view);
QHBoxLayout *layoutHHH = new QHBoxLayout;
layoutHHH->addWidget(send);
layoutHHH->addWidget(lcd);
layoutHHH->addWidget(messages);
layoutHHH->addStretch();
QVBoxLayout *mainLayout = new QVBoxLayout(mainWidget);
//mainLayout->addLayout(layoutV);
mainLayout->addLayout(layoutHH);
mainLayout->addLayout(layoutH);
mainLayout->addLayout(layoutVV);
mainLayout->addLayout(layoutHHH);
нашел косяк, только не понял почему вылетает прога из за него)))
QHBoxLayout *layoutHH = new QHBoxLayout;
layoutHH->addWidget(howMatch);
layoutHH->addWidget(spinbox);
layoutHH->addStretch();
QHBoxLayout *layoutH = new QHBoxLayout;
layoutH->addWidget(start);
layoutH->addWidget(stop);
layoutH->addWidget(clear);
layoutH->addStretch();
QVBoxLayout *layoutVV = new QVBoxLayout;
// layoutVV->addWidget(labelText); //убрал вот эту строчку из кода и сразу все заработало)))) но какая проблема в этой строке???))
layoutVV->addWidget(view);
QHBoxLayout *layoutHHH = new QHBoxLayout;
layoutHHH->addWidget(send);
layoutHHH->addWidget(lcd);
layoutHHH->addWidget(messages);
layoutHHH->addStretch();
QVBoxLayout *mainLayout = new QVBoxLayout(mainWidget);
//mainLayout->addLayout(layoutV);
mainLayout->addLayout(layoutHH);
mainLayout->addLayout(layoutH);
mainLayout->addLayout(layoutVV);
mainLayout->addLayout(layoutHHH);
и главное проблема была в том что этот QLabel использовала адресс не допустимый для операционки и она вылетала...
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)