Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > error: In function `WinMain@16'


Автор: IKM2007 6.12.2010, 19:54
Доброго вечера всем. 
IDE Qt Creator.
Перечислю симптомы ошибки   : 
После свежей установки qt-sdk-win-opensource-2010.02.1 пробую компилить разные GUI проекты. Все компилятся без проблем. Затем распаковываю архив mingw-4.5.1+boost-1.44+openssl+curl.7z(для работы boost-а) в папку D:\Qt\2010.02.1 в котором находится папка mingw, во время распаковки нажимаю "заменить все файлы" и все. После этого уже никакое GUI приложение не компилится в Creator-е, во время компиляции дает следующие ошибки и предупреждения.
Цитата

d:\Qt\2010.02.1\qt\lib/libqtmaind.a:-1: error: In function `WinMain@16':
C:\qt-greenhouse\Trolltech\Code_less_create_more\Trolltech\Code_less_create_more\Troll\4.6\qt\src\winmain/qtmain_win.cpp:93: undefined reference to `_Unwind_Resume'
C:\qt-greenhouse\Trolltech\Code_less_create_more\Trolltech\Code_less_create_more\Troll\4.6\qt\src\winmain/qtmain_win.cpp:135: undefined reference to `_Unwind_Resume'
d:\Qt\2010.02.1\qt\lib/libqtmaind.a(qtmain_win.o):qtmain_win.cpp::-1: error: undefined reference to `__gxx_personality_v0'
:-1: error: collect2: ld returned 1 exit status

Вот вывод сборки:
Цитата

Выполняется сборка проекта GUI...
Настройки не изменились, этап QMake пропускается.
Запускается: D:/Qt/2010.02.1/mingw/bin/mingw32-make.exe -w 
mingw32-make: Entering directory `D:/QtProjects/GUI'
D:/Qt/2010.02.1/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `D:/QtProjects/GUI'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\GUI.exe debug/main.o -L"d:\Qt\2010.02.1\qt\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
mingw32-make[1]: Leaving directory `D:/QtProjects/GUI'
mingw32-make: Leaving directory `D:/QtProjects/GUI'
d:\Qt\2010.02.1\qt\lib/libqtmaind.a(qtmain_win.o): In function `WinMain@16':
C:\qt-greenhouse\Trolltech\Code_less_create_more\Trolltech\Code_less_create_more\Troll\4.6\qt\src\winmain/qtmain_win.cpp:93: undefined reference to `_Unwind_Resume'
C:\qt-greenhouse\Trolltech\Code_less_create_more\Trolltech\Code_less_create_more\Troll\4.6\qt\src\winmain/qtmain_win.cpp:135: undefined reference to `_Unwind_Resume'
d:\Qt\2010.02.1\qt\lib/libqtmaind.a(qtmain_win.o):C:\qt-greenhouse\Trolltech\Code_less_create_more\Trolltech\Code_less_create_more\Troll\4.6\qt\src\winmain/../../include/QtCore/../../src/corelib/tools/qvector.h:482: undefined reference to `_Unwind_Resume'
d:\Qt\2010.02.1\qt\lib/libqtmaind.a(qtmain_win.o):C:\qt-greenhouse\Trolltech\Code_less_create_more\Trolltech\Code_less_create_more\Troll\4.6\qt\src\winmain/../../include/QtCore/../../src/corelib/tools/qvector.h:483: undefined reference to `_Unwind_Resume'
d:\Qt\2010.02.1\qt\lib/libqtmaind.a(qtmain_win.o):qtmain_win.cpp:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\GUI.exe] Error 1
mingw32-make: *** [debug] Error 2
Завершено с кодом 2.
Ошибка во время сборки проекта GUI
Во время выполнения сборки на этапе 'Make'


Так выходит, что не могу одновременно использовать Qt и boost, но в проекте их нужно компилить вместе. В чем может быть проблема?
user posted image

Автор: boostcoder 6.12.2010, 20:06
уже отвечал: http://forum.vingrad.ru/index.php?showtopic=316539&view=findpost&p=2257912

Добавлено @ 20:07
Цитата(IKM2007 @  6.12.2010,  19:54 Найти цитируемый пост)
Затем распаковываю архив mingw-4.5.1+boost-1.44+openssl+curl.7z

это по всей видимости сборки из моей подписи.
со сборкой никаких проблем нет. уверяю smile

Добавлено @ 20:09
Цитата(IKM2007 @  6.12.2010,  19:54 Найти цитируемый пост)
qt-greenhouse\Trolltech\Code_less_create_more\Trolltech\Code_less_create_more

откуда такие пути берутся? впервые вижу smile 
дайте ссылку на то что инсталил.

Добавлено @ 20:11
Цитата(IKM2007 @  6.12.2010,  19:54 Найти цитируемый пост)
После свежей установки qt-sdk-win-opensource-2010.02.1

вы что-то изрядно напутали, последняя сборка зовется: qt-sdk-win-opensource-2010.05

Добавлено через 9 минут и 30 секунд
Цитата(boostcoder @  6.12.2010,  20:06 Найти цитируемый пост)
это по всей видимости сборки из моей подписи.

ага.. это предыдущая. но с ней тоже косяков не было.

Автор: IKM2007 6.12.2010, 20:29
Цитата(boostcoder @  6.12.2010,  20:06 Найти цитируемый пост)
откуда такие пути берутся? впервые вижу  
дайте ссылку на то что инсталил.

Поискал на компе, таких директории действительно нету, не знаю почему выдает так.
Цитата(boostcoder @  6.12.2010,  20:06 Найти цитируемый пост)
вы что-то изрядно напутали, последняя сборка зовется

После "свежей" установки  - имел ввиду сразу после установки, а не после установки последней версии. smile 

Цитата(boostcoder @  6.12.2010,  20:06 Найти цитируемый пост)
уже отвечал: http://forum.vingrad.ru/index.php?showtopi...t&p=2257912

Цитата(boostcoder @  1.12.2010,  20:59 Найти цитируемый пост)
это из-за бинарной несовместимости библиотек.

Каких библиотек? Qt?

Автор: boostcoder 6.12.2010, 20:36
Цитата(IKM2007 @  6.12.2010,  20:29 Найти цитируемый пост)
Qt?

в данном случае да.

удалите все что проинсталили. сначала деинсталлятором потом вручную. и инстальте все заново..

Добавлено через 2 минуты и 1 секунду
Цитата(IKM2007 @  6.12.2010,  20:29 Найти цитируемый пост)
Поискал на компе, таких директории действительно нету, не знаю почему выдает так.

забавно-то как smile

Добавлено через 2 минуты и 18 секунд
комп живущий своей жизнью..

Автор: IKM2007 6.12.2010, 20:43
Цитата(boostcoder @  6.12.2010,  20:36 Найти цитируемый пост)
удалите все что проинсталили. сначала деинсталлятором потом вручную. и инстальте все заново..

 smile уже делал, не помогло. Я это имел ввиду, когда писал "после свежей установки". Тогда я удалил весь Qt с регистрами и т.д. Может во время распаковки не надо заменить файлы?

Цитата(boostcoder @  6.12.2010,  20:36 Найти цитируемый пост)
комп живущий своей жизнью..

Я бы сказал "комп живущий последние дни в своей жизни" smile 

Автор: rudvil 6.12.2010, 20:52
У меня тоже самое было, лечил полным пересобиранием кьюта, с помощью "C:\Qt\2010.05\qt\configure.exe".

Автор: boostcoder 6.12.2010, 21:00
Цитата(rudvil @  6.12.2010,  20:52 Найти цитируемый пост)
ечил полным пересобиранием кьюта

никому не говорите такого smile 

Автор: rudvil 6.12.2010, 21:08
Цитата(boostcoder @ 6.12.2010,  21:00)
Цитата(rudvil @  6.12.2010,  20:52 Найти цитируемый пост)
ечил полным пересобиранием кьюта

никому не говорите такого smile

хорошо  smile
но ведь помогает-то!! smile 

Автор: IKM2007 6.12.2010, 22:07
Цитата(rudvil @  6.12.2010,  21:08 Найти цитируемый пост)
но ведь помогает-то!! 

Есть разница между пересборкой и переустановкой Qt? Хотя переформулирую вопрос : какие преимущества есть в первом варианте?

Автор: rudvil 6.12.2010, 22:34
Цитата(IKM2007 @ 6.12.2010,  22:07)
Цитата(rudvil @  6.12.2010,  21:08 Найти цитируемый пост)
но ведь помогает-то!! 

Есть разница между пересборкой и переустановкой Qt? Хотя переформулирую вопрос : какие преимущества есть в первом варианте?

Установка, это просто распаковка всего того что запихнули в инсталлятор, т.е. уже собранное.
Пересборка, это когда кьют заного собирается/компилируется из исходников.

Автор: IKM2007 6.12.2010, 22:59
Цитата(rudvil @  6.12.2010,  22:34 Найти цитируемый пост)
Пересборка, это когда кьют заного собирается/компилируется из исходников. 

И какие преимущества?

Автор: boostcoder 6.12.2010, 23:57
Цитата(IKM2007 @  6.12.2010,  22:59 Найти цитируемый пост)
И какие преимущества?

потеря 4-6 часов. если это можно считать преимуществом smile 

Автор: xvr 7.12.2010, 12:48
И boost и Qt у вас пользуются mingw для сборки себя. Т.к. у вас уже собранные дистрибутивы, к тому же включающие в себя и mingw, каким их собирали, у вас образовалось 2 mingw разных версий (которые друг друга весело переписали  smile ). Судя по логам - версий несовместимых. Так что или вам придется искать сборки Qt и boost на одной и той же версии mingw, или кого то из них пересобирать с сорцов с версией mingw от другого компонента.

Автор: boostcoder 7.12.2010, 12:57
xvr, тот мингв что у меня в подписи - совместим с библиотеками Qt-SDK. проверено.
на причину несовместимости намекает это: "C:\qt-greenhouse\Trolltech\Code_less_create_more\Trolltech\Code_less_create_more"
что это такое - я хз. никогда SDK не использовало такие пути.

Автор: xvr 7.12.2010, 13:09
Цитата(boostcoder @  7.12.2010,  12:57 Найти цитируемый пост)
xvr, тот мингв что у меня в подписи - совместим с библиотеками Qt-SDK. проверено.
С нормальными - да
Цитата(boostcoder @  7.12.2010,  12:57 Найти цитируемый пост)
на причину несовместимости намекает это: "C:\qt-greenhouse\Trolltech\Code_less_create_more\Trolltech\Code_less_create_more"
что это такое - я хз. никогда SDK не использовало такие пути. 
Это были пути там, где собирался Qt:
Цитата

d:\Qt\2010.02.1\qt\lib/libqtmaind.a(qtmain_win.o): In function `WinMain@16':
C:\qt-greenhouse\Trolltech\Code_less_create_more\Trolltech\Code_less_create_more\Troll\4.6\qt\src\winmain/qtmain_win.cpp:93: undefined reference to `_Unwind_Resume'
Т.е. поломалось в библиотеке libqtmaind.a, которая лежит в d:\Qt\2010.02.1\qt\lib. А поломался модуль qtmain_win.o, который был откомпилен из исходника qtmain_win.cpp, который лежал на момент компиляции в C:\qt-greenhouse\Trolltech\Code_less_create_more\Trolltech\Code_less_create_more\Troll\4.6\qt\src\winmain. Судя по наличию Trolltech в пути, это собирали еще до эры Nokia в Qt  smile 
Интересно, какая версия mingw там была?

Автор: boostcoder 7.12.2010, 13:32
Цитата(xvr @  7.12.2010,  13:09 Найти цитируемый пост)
Судя по наличию Trolltech в пути, это собирали еще до эры Nokia


Цитата(xvr @  7.12.2010,  13:09 Найти цитируемый пост)
Troll\4.6

угу.
походу, ТС проинсталил что-то ооочень древнее.

Автор: IKM2007 7.12.2010, 16:07
Цитата(xvr @  7.12.2010,  13:09 Найти цитируемый пост)
Интересно, какая версия mingw там была?

в SDK версия библиотек Qt 4.6.2, а версия компилятора к нему "mingw 3.15 (GCC 4.4.0)". 
Цитата(xvr @  7.12.2010,  12:48 Найти цитируемый пост)
Так что или вам придется искать сборки Qt и boost на одной и той же версии mingw

Последняя версия с офф. сайта : Qt SDK for Windows* (322 MB) подойдет к mingw-4.5.1?

Автор: boostcoder 7.12.2010, 16:18
да

Добавлено через 25 секунд
по крайней мере у меня все работает.

Автор: IKM2007 7.12.2010, 21:55
установил Qt SDK v2010.05 и распаковал mingw-4.5.1+boost-1.45+openssl-1.0.0a+curl-7.21.2+libtorrent_rasterbar-0.15.4 с заменой файлов. Те же ошибки.

Автор: boostcoder 8.12.2010, 03:42
экспериментально выяснил, что эта ошибка из-за того, что http://qt.nokia.com/downloads/windows-cpp собраны мингвом с поддержкой sjlj. в то время, как  http://qt.nokia.com/downloads/sdk-windows-cpp собраны этой же версией мингва, но без поддержки sjlj. почему так? - хз. полагаю что и тролли этого не знают smile 

из-за того, что я тестирую ftp://ftp.qt.nokia.com/qtcreator/snapshots/, я Qt SDK никогда не устанавливал(или, возможно, последний раз еще в детстве).

вывод - Qt SDK искоренить! установить http://qt.nokia.com/downloads/windows-cpp, и отдельно установить http://qt.nokia.com/downloads/qt-creator-binary-for-windows, и заменить содержимое каталога mingw тем, что в архиве в моей подписи.

Автор: IKM2007 8.12.2010, 15:36
Ок, качаю.

Автор: IKM2007 12.12.2010, 12:31
В общем проблема(проблемы, так как после решения проблемы с winmain линкер выдавал ошибку Cannot export относительно библиотеки serialization) решилась установкой Qt SDK и сборкой буста версии 1_45_0 для mingw, который был с SDK. Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)