Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   создание проекта QT для VS2003 (http://forum.oszone.net/showthread.php?t=29992)

Vlad Drakula 09-01-2004 02:21 206632

вот создаю проет с помощью QT"шного мастера, добавляю код из примера, компилирую....
для стандартных примеров 1-6 все работает, но когда в проекте появляется несколько файлов то начинаются проблеммы:

------ Build started: Project: qt002, Configuration: Release Win32 ------

Linking...
LINK : warning LNK4199: /DELAYLOAD:comdlg32.dll ignored; no imports found from comdlg32.dll
LINK : warning LNK4199: /DELAYLOAD:oleaut32.dll ignored; no imports found from oleaut32.dll
LINK : warning LNK4199: /DELAYLOAD:winmm.dll ignored; no imports found from winmm.dll
LINK : warning LNK4199: /DELAYLOAD:wsock32.dll ignored; no imports found from wsock32.dll
LINK : warning LNK4199: /DELAYLOAD:winspool.dll ignored; no imports found from winspool.dll
001.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall LCDRange::qt_property(int,int,class
QVariant *)" (?qt_property@LCDRange@@UAE_NHHPAVQVariant@@@Z)
001.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall LCDRange::qt_emit(int,struct QUObject
*)" (?qt_emit@LCDRange@@UAE_NHPAUQUObject@@@Z)
001.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall LCDRange::qt_invoke(int,struct
QUObject *)" (?qt_invoke@LCDRange@@UAE_NHPAUQUObject@@@Z)
001.obj : error LNK2001: unresolved external symbol "public: virtual void * __thiscall LCDRange::qt_cast(char const *)"
(?qt_cast@LCDRange@@UAEPAXPBD@Z)
001.obj : error LNK2001: unresolved external symbol "public: virtual char const * __thiscall LCDRange::className(void)const
" (?className@LCDRange@@UBEPBDXZ)
001.obj : error LNK2019: unresolved external symbol "public: static class QMetaObject * __cdecl
LCDRange::staticMetaObject(void)" (?staticMetaObject@LCDRange@@SAPAVQMetaObject@@XZ) referenced in function "public: virtual
class QMetaObject * __thiscall LCDRange::metaObject(void)const " (?metaObject@LCDRange@@UBEPAVQMetaObject@@XZ)
.\qt002.exe : fatal error LNK1120: 6 unresolved externals

Build log was saved at "file://e:\Qtpro\qt002\Release\BuildLog.htm"
qt002 - 7 error(s), 5 warning(s)

причем код где произошла ошибка я посмотреть не могу...

может я не так что то делаю?

PS
QT 3.2.1

mar 10-01-2004 13:16 206633

Vlad Drakula
так ты на qt под windows пишешь? забавно =)
смотри - там ругань идет на стандартные (неqt) win - библиотеки. Может там быть такое, что где-то что-то при установке пакета не прописано? (сугубо вслепую, нигде кроме linux-а с qt эксперементировать не приходилось)

ivank 10-01-2004 15:01 206634

mar
Ругань идёт на то что эти библиотеки подлинковываются, но из них ничего не используется.

Vlad Drakula
А ругань на то что пониде идёт о том, что он не находит ф-ии на которые ссылается твоя программа (в частности - методы кутэшных классов). В опциях проекта подключи соответствующие .lib, и всё будет хорошо. Голая теория, с QT сношений не имел.

Vlad Drakula 13-01-2004 20:05 206635

mar
а можешь про использовании в линуксе написать что ни буть (с нуля), у меня RH9.0,  KDev, QT.

как мне все это сопрячь для удобной работы?
PS
я просто ничего сложного под линксом не писал.

так что можно по бодробнее???
буду очень благодарен.

mar 14-01-2004 19:29 206636

с нуля очень пример и как делать показан на firststeps http://www.firststeps.ru/linux/qt/qt1.html
(а я окошек под Linux-ом тоже практически не писала =)

Добавлено:

и еще - по скорости работы, наверное стоит смотреть в строну gtk. Впрочем, это дело вкуса

Vlad Drakula 14-01-2004 19:57 206637

mar
тут даже не в скорости дела, а в удобстве и кросс платформенности + Qt поддерживает экспишность в своих программах!

mar 14-01-2004 20:34 206638

Vlad Drakula
ну для меня скорость и 'нетяжелость' значит много =)
gtk - все-таки библиотеки на которых сделан Gimp, а это уже само за себя говорит. А qt-для KDE, а KDE такая тяжелая штука, что многие ее вообще стараются не ставить. А что касается переносимости, я далеко не уверена, что qt-windows приложения будут конкурентоспособны по сравнению с win - приложениями написанными и скомпилированными под MSVС по тем же показателям - скорость-размеры..

Zur0 17-01-2004 12:51 206639

Vlad Drakula
А прогу то пишите с комерческой целью. Если да то qt ведь покупать надо :)

hasherfrog 21-01-2004 15:19 206640

2Vlad Drakula : Скорее всего при инталляции QT использовалась small-модель. Поэтому некоторых KDE-библиотек не хваиает.
2mar: Сила QT вовсе не в скорости,  а в портируемости.

Vlad Drakula 28-01-2004 02:53 206641

hasherfrog
какие библиотеки KDE под виндой.....

на счет портируемости ты прав, но я до сихпор не смог заставить ее работать....

hasherfrog 28-01-2004 09:02 206642

Sorry, спешил и оговорился. Хотел две мысли высказать одной фразой. Не библиотеки, а компоненты.  LCDRange, на отсутствие которого ругается библиотекарь MVS, это визуальный компонент, разработанный для KDE. Его объектник не включается в библиотеку QT, если выбрана модель установки small.
Если намерения серьезные, поставь Full :)

Vlad Drakula 28-01-2004 18:35 206643

hasherfrog
еще раз какое KDE под виндой, к томуже у меня нету никаких настроек в инсталлере кроме выбора драйверов баз данных.

hasherfrog 30-01-2004 10:04 206644

Дошло до меня... Спешить не надо было. Забудьте все, что я наговорил выше - полнейшую чушь, это точно.... :(
Внимание, правильный ответ.
Дело не в "нескольких файлах", а в "добавляю код из примера" и в "Project: qt002".  Дело в том, что в проекте "t7 " вводится QOBJECT в lcd_range.h. Файлы, имеющие такой максрос, должны обрабатываться moc (Meta Object compiler, кажется) до собственно компиляции.
В учебном проекте эта обработка выполняется в файле .dsp (загляни туда с помощью блокнота, и увидишь, что IF $CFG="t7 - Debug" ляляля moc.exe lcd_range.h" Первой фразой в окне output при компиляции будет что-то типа "Moc'ing lcd_range.h". После работы moc'a появиться файл moc_lcd_range.cpp. Настоящий source-code класса LCDRange будет именно здесь. В Linux'e подобные директивы прописываются в Makefile, в MSVS, как видим, в dsp. Поэтому... Либо надо руками дописать в твой qt-002.dsp(dsw) указание вызвать moc перед компиляцией (через закладку "Custom build"), или это должен как-то делать сам MSVS с подачи Qt-Wizard'a (тут я ничего не могу посоветовать, у меня нет VS2003)
PS. Это очень грубое объяснение, но подробно можно рассказывать часами, там много подводных камней.

Guest 12-02-2004 10:35 206645

Цитата:

Поэтому... Либо надо руками дописать в твой qt-002.dsp(dsw) указание вызвать moc перед компиляцией (через закладку "Custom build")...
Хотелось бы вот с этого места поподробнее... если можно! :)

hasherfrog 13-02-2004 11:33 206646

подробнее о чем? О вкладке Custom build или формате .dsp-файлов? Я повторяю, у меня нет VS2003, sorry.... Для данного конкретного случая я просто сообразил, в чем дело, а рассказывать вообще о QT или VS здесь не имеет смысла. Поконкретнее, пожалуйста


Время: 17:32.

Время: 17:32.
© OSzone.net 2001-