Название: компиляция приложений в qt4 под win32 ..... проблемы Отправлено: blackliteon от Июль 29, 2005, 12:45 Привет.
Пытаюсь создать и откомпайлить проект: qmake -project qmake nmake версия qt коммерческая. Так вот nmake не может найти хедеры (ну и есс-но либы) куте. Как прописать их, чтобы было ему всё видно (nmake-у). Спасибо. Название: компиляция приложений в qt4 под win32 ..... проблемы Отправлено: Racheengel от Июль 29, 2005, 14:22 а переменная окружения QMAKESPEC у тебя настроена?
Название: Переменная окружения Отправлено: blackliteon от Июль 29, 2005, 15:03 Можно подробнее что за переменная и как её настроить ?
Название: компиляция приложений в qt4 под win32 ..... проблемы Отправлено: Racheengel от Июль 29, 2005, 15:24 по идее, она служит для определения системы сборки (компилятора) и должна содержать название каталога с соответствующими инклудами (например, QMAKESPEC =win32-msvc.net). Устанавливается обычно автоматически. Кроме этого, должна быть установлена переменная QTDIR на корень инсталляции и PATH на подкаталог bin в инсталляции.
Название: вроде ясно Отправлено: blackliteon от Июль 29, 2005, 15:52 Как думаешь, может qmake сам виноват (т.е. я его не полностью понял).
Примеры же компайлятся в начале установки, а не распаковываются, насколько я понял. А бинарники у меня в release лежат как пологен. Т.е. сама qt примеры компайлила без проблем. Интересно мнение Название: компиляция приложений в qt4 под win32 ..... проблемы Отправлено: L.Marvell от Июль 29, 2005, 16:40 My Computer -> Properties -> Advanced > Environments Variables
Смотрим: PATH, QMAKESPEC, QTDIR Постим сюда. Название: Здорово Отправлено: blackliteon от Июль 29, 2005, 16:59 Спасибо.
Интересно, если INCLUDE прописывается тоже в "переменные окружения", как это делать для Qt? Там есть INCLUDE, только вот если обычно там прямо и лежат .h файлики, то в куте ещё один уровень поддиректорий (а в нём может быть ещё). Как тогда указать? И насколько я понял, опции Visual C6->Directories (include + lib) не действуют на nmake. Название: Re: Здорово Отправлено: LamerDrv от Июль 29, 2005, 18:52 Цитата: "blackliteon" Спасибо. Интересно, если INCLUDE прописывается тоже в "переменные окружения", как это делать для Qt? Там есть INCLUDE, только вот если обычно там прямо и лежат .h файлики, то в куте ещё один уровень поддиректорий (а в нём может быть ещё). Как тогда указать? Иногда, если директория include в свою очередь содержит набор подкаталогов, то в переменной окружения path прописывают путь к верхнему каталогу, а в листингах программ пишут примерно так #include <QtCore\qbitarray.h> Т.е. указывают имя подкаталога. Но кстати, в случае с QT, вообще не надо ее директорию include прописывать в переменной окружения "include". Насколько я понимаю, qmake при создании файла nmake включает в него директиву INCPATH, в которой и прописаны пути к заголовочным файлам qt. Так что как и сказал L.Marvell нужны следующие переменные окржуения PATH = c:\qt\4.0.0\bin (или где там она у тебя) QMAKESPEC = win32-msvc.net (для VS203.NET) или win32-msvc (для VC6) QTDIR = c:\Qt\4.0.0 (или где там она у тебя) INCLUDE = пути к include-директории VC и/или SDK Цитата: "blackliteon" И насколько я понял, опции Visual C6->Directories (include + lib) не действуют на nmake. Да не действуют. Они действуют только внутри среды VC. Так что директория include из VC6 действительно должна быть происана в переменной окружения "include", чтобы nmake работал. Если не ошибаюсь где в недрах директории куда установлен VC есть bat-файл, который содержит команды SET INCLUDE (и т.п.), прописывающие все что надо для nmake (естественно это работает только для текущего консольного окна в котором запущен этот bat-файл). Аналогичный файл есть в QT (для него создается ярлык "Qt 4.0.0 Command Prompt"). Запускаешь ентот ярлык и в данной консоли qmake и nmake дожны работать нормально Название: окей, большое спасибо Отправлено: blackliteon от Июль 29, 2005, 19:18 Парни, большое спасибо!
Очень приятно за оперативную подднржку! Название: блин.... Отправлено: blackliteon от Июль 29, 2005, 21:05 Блин, под консолью qt что-то хоть пошло. Но теперь пишет, что ей чего-то не хватает.... дурдом. Вообщем вначале писала, что не хватает private/qucomextra_p.h (не может найти). Выяснил, что из файлика
moc_configdialog.h: /**************************************************************************** ** ConfigDialog meta object code from reading C++ file 'configdialog.h' ** ** Created: ?? 28. ??? 20:07:28 2005 ** by: The Qt MOC ($Id: $) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #undef QT_NO_COMPAT #include "../../../configdialog.h" #include <qmetaobject.h> #include <qapplication.h> #include <private/qucomextra_p.h> пытался простой пример откомпайлить (hello world), тоже ругается на какие-то либы....... =( Думал, может дело в старой куте (3-3-4), взял её переместил. Так теперь столько UNRESOLVED EXTERNAL SYMBOL-ов...... Название: Re: блин.... Отправлено: LamerDrv от Июль 30, 2005, 08:57 Цитата: "blackliteon" Вообщем вначале писала, что не хватает private/qucomextra_p.h (не может найти). Файл qucomextra_p.h точно из QT3.3.4. В версии 4.0.0 такого нет Кстати, в нем любопытный комментарий // This file is not part of the Qt API. This header file may // change from version to version without notice, or even be // removed. Цитата: "blackliteon" Думал, может дело в старой куте (3-3-4), взял её переместил. Похоже в ней. Проверь значения ранее упомянутых переменных окружения непосредственно в консольном окне командами SET QTDIR, SET QMAKESPEC и т.д. Название: что творится..... Отправлено: blackliteon от Июль 30, 2005, 10:21 Перекинулся на линь, ужас, думал хоть будет что-то.....
полностью откомпайлил за несколько часов опенсорсную куту. Опять она мне откомпайлила бинарники (успешно). а потом делаю: qmake -project (работает) qmake (пишет Project LOAD(): Feature qt_config cannot be found.) nmake не работает (или нет makefile или ошибок миллион) Переменные QTDIR, LD_...._LIB прописал - хоть makefile начал делаться (порядка 3-5 ошибок), решил PATH ещё потрогать: потрогал..... ошибок штук 50 make начал давать. С виндой осталось только qt3 полностью вырезать и поставить снова 4ую. Название: а под виндой.... Отправлено: blackliteon от Июль 30, 2005, 11:30 Удалил полностью 3ю куте, думал может дело в ней.......
А теперь на первый туториал (даже мейк не переделывал, просто ввёл nmake ) NMAKE -f Makefile.Release link /LIBPATH:"C:\Qt\4.0.0\lib" /LIBPATH:"C:\Qt\4.0.0\lib" /NOLOGO /SUBSYSTEM:WINDOWS /OUT:"release\t1.exe" @C:\DOCUME~1\6321~1.66C\LOCALS~1\Temp\nma02120. qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::_Mutex::_Unlock(void)" (__imp_?_Unlock@_Mutex@std@@QAEXXZ) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::_Mutex::_Lock(void)" (__imp_?_Lock@_Mutex@std@@QAEXXZ) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::locale::facet::_Register(void)" (__imp_?_Register@facet@locale@std@@QAEXXZ) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall bad_cast::bad_cast(char const *)" (__imp_??0bad_cast@@QAE@PBD@Z) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<char>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@@Z) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class std::locale::facet const * __thiscall std::locale::_Getfacet(unsigned int)const " (__imp_?_Getfacet@locale@std@@QBEPBVfacet@12@I@Z) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::_Lockit::_Lockit(int)" (__imp_??0_Lockit@std@@QAE@H@Z) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<unsigned short>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@G@std@@SAIPAPBVfacet@locale@2@@Z) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(char const *)" (__imp_??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(unsigned int,char)" (__imp_??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ID@Z) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >(unsigned short const *)" (__imp_??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@PBG@Z) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >(unsigned int,unsigned short)" (__imp_??0?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@IG@Z) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> >::_Osfx(void)" (__imp_?_Osfx@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAEXXZ) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __thiscall std::basic_istream<unsigned short,struct std::char_traits<unsigned short> >::_Ipfx(bool)" (__imp_?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __thiscall std::basic_istream<char,struct std::char_traits<char> >::_Ipfx(bool)" (__imp_?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE_N_N@Z) qtmain.lib(qtmain_win.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::basic_ostream<char,struct std::char_traits<char> >::_Osfx(void)" (__imp_?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ) release\t1.exe : fatal error LNK1120: 16 unresolved externals Название: компиляция приложений в qt4 под win32 ..... проблемы Отправлено: LamerDrv от Июль 31, 2005, 09:48 Может у тебя переменная окружения QMAKESPEC установлена неправильно. (Например, равна "win32-msvc.net" в то время как ты используешь Visual C++6.0). Для Visal C++ 6.0 - должно быть равно "win32-msvc"
Насчет удаления 3-ей QT - это ты конечно погорячился. У меня (да и у других) стоят обе версии и работают. Хотя я, честно говоря, 3-ю уже не пробовал некоторое время, но с 4-ой все в порядке и третья ей никак не мешает. Как вариант: может быть ты в переменные окружения include и/или lib пытался вписать пути к заголовкам и/или библиотекам самой QT? Как раз этого делать НЕ надо. На всякий случай вот значения, которые у меня в системе (правда у меня Visual C++.NET, а не 6-ой): PATH - e:\Qt\4.0.0\bin;E:\Qt\3.3.4\bin;... QMAKESPEC - win32-msvc.net QTDIR - e:\Qt\4.0.0 INCLUDE - E:\Program Files\VS2003\Vc7\include;E:\Program Files\VS2003\Vc7\PlatformSDK\Include LIB - E:\Program Files\VS2003\Vc7\lib;E:\Program Files\VS2003\Vc7\PlatformSDK\Lib Название: наверное ты прав Отправлено: blackliteon от Август 01, 2005, 16:01 Может быть..... у меня стояла вместе с .net
Приду домой, попробую. Под линью запустил, правда оказалось что нужно из /usr/bin старый кумейк удалить, т.к. в путях он (эта директория) оказалась раньше. С меня пиво, если под виндой запустится qt Название: qmake-то глупый Отправлено: blackliteon от Август 01, 2005, 17:03 Хотя может совсем наоборот: глупый я.
Когда под линью qmake-ом делал проектный файл, незахотела компайлить потом мейком проект, вываливала ошибки. Что-то в проекте было с ресурсными файлами, решил проверить эти проектные файлы (что был в примерах до меня и мой проектный файл). Различались в 2 раза..... При этом каких-то серьёзных параметров для кумейка в доках не нашёл. Придётся работать ручками........ :( |