Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: agentgoblin от Май 25, 2010, 05:02



Название: Не работает release (память не может быть read)
Отправлено: agentgoblin от Май 25, 2010, 05:02
Qt 4.6.2 и MinGW 5.1.6 под WinXP

Компилирую (статически) hello world. Исходник:
Код:
#include <QApplication>
#include <QLabel>

int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QLabel hello("Hello, World!");
    hello.show();
    return app.exec();
}
Проблема заключается в следующем: когда собирается debug - он работает. Когда собирается release - он вылетает с сообщением:
Цитировать
Инструкция по адресу "0x008ee0ae" обратилась к памяти по адресу "0xffffffff". Память не может быть "read"
В чём может быть причина? Где копать?

P.S. Кстати, опытным путём установлено, что debug после strip уменьшается в размерах почти до release и продолжает запускаться. Проблема с оптимизацией release?


Название: Re: Не работает release (память не может быть read)
Отправлено: KuZ от Май 25, 2010, 20:48
Возможно из-за того что кьют собран статически только для дебага.


Название: Re: Не работает release (память не может быть read)
Отправлено: agentgoblin от Май 26, 2010, 19:27
Собирал с ключом -debug-and-release. Я так понимаю, что это именно верно для обоих случаев: и debug и release. Кроме того, release собирается в .exe на 12 Мбайт. Debug, при отрезаниии strip'ом отладочной информации, имеет почти тот же размер, но при этом работает.

Собирал по инструкции, кажется, с wiki.crossplatform. Вот так:
Код:
make confclean

configure -debug-and-release -opensource -static -system-sqlite -no-opengl -no-openvg -platform win32-g++ -graphicssystem raster -qt-zlib -no-libmng -no-libtiff -no-dsp -no-vcproj -qmake -process -mmx -sse -sse2 -arch windows -qt-style-windows -qt-style-windowsxp -qt-style-cleanlooks -qt-style-motif -qt-style-cde

make sub-src

Вообще я, конечно, могу собирать из программ debug, затем резать strip'ом и не волноваться - размер почти тот же и при этом работает. Но хотелось бы разобраться.