Russian Qt Forum
Ноябрь 22, 2024, 18:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: компиляция приложений в qt4 под win32 ..... проблемы  (Прочитано 16625 раз)
blackliteon
Гость
« : Июль 29, 2005, 12:45 »

Привет.
Пытаюсь создать и откомпайлить проект:

qmake -project
qmake
nmake

версия qt коммерческая.
Так вот nmake не может найти хедеры (ну и есс-но либы) куте.
Как прописать их, чтобы было ему всё видно (nmake-у).

Спасибо.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #1 : Июль 29, 2005, 14:22 »

а переменная окружения QMAKESPEC у тебя настроена?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
blackliteon
Гость
« Ответ #2 : Июль 29, 2005, 15:03 »

Можно подробнее что за переменная и как её настроить ?
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Июль 29, 2005, 15:24 »

по идее, она служит для определения системы сборки (компилятора) и должна содержать название каталога с соответствующими инклудами (например, QMAKESPEC =win32-msvc.net). Устанавливается обычно автоматически. Кроме этого, должна быть установлена переменная QTDIR на корень инсталляции и PATH на подкаталог bin в инсталляции.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
blackliteon
Гость
« Ответ #4 : Июль 29, 2005, 15:52 »

Как думаешь, может qmake сам виноват (т.е. я его не полностью понял).
Примеры же компайлятся в начале установки, а не распаковываются, насколько я понял. А бинарники у меня в release лежат как пологен. Т.е. сама qt примеры компайлила без проблем. Интересно мнение
Записан
L.Marvell
Гость
« Ответ #5 : Июль 29, 2005, 16:40 »

My Computer -> Properties -> Advanced > Environments Variables

Смотрим: PATH, QMAKESPEC, QTDIR

Постим сюда.
Записан
blackliteon
Гость
« Ответ #6 : Июль 29, 2005, 16:59 »

Спасибо.
Интересно, если INCLUDE прописывается тоже в "переменные окружения", как это делать для Qt? Там есть INCLUDE, только вот если обычно там прямо и лежат .h файлики, то в куте ещё один уровень поддиректорий (а в нём может быть ещё). Как тогда указать? И насколько я понял, опции Visual C6->Directories (include + lib) не действуют на nmake.
Записан
LamerDrv
Гость
« Ответ #7 : Июль 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
Гость
« Ответ #8 : Июль 29, 2005, 19:18 »

Парни, большое спасибо!
Очень приятно за оперативную подднржку!
Записан
blackliteon
Гость
« Ответ #9 : Июль 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-ов......
Записан
LamerDrv
Гость
« Ответ #10 : Июль 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
Гость
« Ответ #11 : Июль 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
Гость
« Ответ #12 : Июль 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
Записан
LamerDrv
Гость
« Ответ #13 : Июль 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
Гость
« Ответ #14 : Август 01, 2005, 16:01 »

Может быть..... у меня стояла вместе с .net
Приду домой, попробую. Под линью запустил, правда оказалось что нужно из /usr/bin старый кумейк удалить, т.к. в путях он (эта директория) оказалась раньше. С меня пиво, если под виндой запустится qt
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.056 секунд. Запросов: 23.