Russian Qt Forum

Qt => Qt Embedded => Тема начата: thedimitrius от Март 30, 2010, 11:56



Название: Проект, собранный для Win CE, не работает на WinCE, но работает на Win Mobile
Отправлено: thedimitrius от Март 30, 2010, 11:56
Всем привет!
Есть железка на базе Samsung ARM920T-S3C2440A, операционная система windows ce version 5.00 build 1400.
На чистой системе в виртуалке установил Visual Studio 2008 и Windows CE 5.00 SDK. Затем скачал Qt embedded, сделал
configure -platform win32-msvc2008 -xplatform wince50standard-armv4i-msvc2008
setcepaths wince50standard-armv4i-msvc2008
nmake
Затем сделал проект в qt creator в другой виртуалке, проект скопировал на виртуалку, там сделал
qmake -tp vc
и получившийся проект откомпилировал в Visual Studio.
На железке не работает, зато работает на смартфоне под Windows Mobile 6.1 Professional и НЕ работает в эмуляторе WinMobile 6.1. Правда, на телефоне есть ещё приписка под версией:
ОС CE 5.2.21051 (сборка 21127.1.6.6)


Название: Re: Проект, собранный для Win CE, не работает на WinCE, но работает на Win Mobile
Отправлено: ufna от Март 30, 2010, 15:56
"не работает" - это какие симптомы?

Если железка у тебя это навигатор - то посмотри здесь, я уже описывал: http://ufna.ru/2010/03/23/pna-mod-qt-4-wince-build

вообще, для 5ой версии очень рекомендую именно MSVS 2005. Я уже не помню почему, но имелся с этим много, пришлось именно вернуться к этой версии.


Название: Re: Проект, собранный для Win CE, не работает на WinCE, но работает на Win Mobile
Отправлено: thedimitrius от Март 31, 2010, 21:49
Не работает - значит выдаёт окошко "<program_name> не является приложением windows ce"
Спасибо за совет, удивлён, что не нашёл эту стать сам. Завтра утром попробую=)
И - да, ты прав, программирую под навигатор, на задней наклейке Win CE _CORE_


Название: Re: Проект, собранный для Win CE, не работает на WinCE, но работает на Win Mobile
Отправлено: ufna от Март 31, 2010, 22:18
ничего удивительного - ее поисковики только вчера или позавчера проиндексировали :)

еще особенность этих Embedded виндоусов в том, что там могут быть к тому же еще и не все компоненты. Практика показала, что чаще всего отсутствует aygshell.dll.


Название: Re: Проект, собранный для Win CE, не работает на WinCE, но работает на Win Mobile
Отправлено: thedimitrius от Апрель 01, 2010, 11:15
Итак-вести с фронтов=)
Компиляция прошла нормально, но линковщик ругается на
mainwindow.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QWidget::dragEnterEvent(class QDragEnterEvent *)" (?dragEnterEvent@QWidget@@MAAXPAVQDragEnterEvent@@@Z)
mainwindow.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QWidget::dragMoveEvent(class QDragMoveEvent *)" (?dragMoveEvent@QWidget@@MAAXPAVQDragMoveEvent@@@Z)
mainwindow.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QWidget::dragLeaveEvent(class QDragLeaveEvent *)" (?dragLeaveEvent@QWidget@@MAAXPAVQDragLeaveEvent@@@Z)
mainwindow.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl QWidget::dropEvent(class QDropEvent *)" (?dropEvent@QWidget@@MAAXPAVQDropEvent@@@Z)

Судя по всему, надо из configure всё же убрать -D QT_NO_DRAGANDDROP. Ща попробую пересобрать, о результатах отпишусь.


Название: Re: Проект, собранный для Win CE, не работает на WinCE, но работает на Win Mobile
Отправлено: thedimitrius от Апрель 01, 2010, 12:59
Итак.
Сделал всё по инструкции от ufna, кроме того, что убрал дефайн QT_NO_DRAGANDDROP (что, может, и к лучшему - попробую его поиспользовать в программе своей).
И.... Оно заработало!
Огромное спасибо ufna за советы и отклик=)
ufna, если Вы не возражаете, я переведу на английский Вашу статью и выложу на англоязычных форумах, подозреваю, что она будет полезной (естественно, со ссылкой на Вашу страничку).
Ещё раз спасибо=)


Название: Re: Проект, собранный для Win CE, не работает на WinCE, но работает на Win Mobile
Отправлено: ufna от Апрель 01, 2010, 14:02
не за что, всегда рад помочь ;) конечно я не против перевода ;)

а про QDragEvent'ы - забыл про этом написать, сейчас и в статью добавлю. В настройках проекта, в "С/С++" разделе в командную линию надо добавить те же флаги:
Код
C++ (Qt)
/D "QT_NO_DRAGANDDROP" /D "QT_NO_DRAGANDDROP" /D "QT_NO_CLIPBOARD" /D "QT_NO_ACCESSIBILITY" /D "QT_NO_SESSIONMANAGER"

тогда компоновщик ругаться не будет и все пройдет успешно :) Просто вне зависимости от того, как собрана библиотека, исходники то остаются теми же самыми, и если не указать эти дефайны, студия так же тянет "запрещенные нами" функции.

P.S. - Не факт что drag n drop есть реально - может быть случай, что когда его только реально подключишь, приложение начнет вылетать со ссылкой на кусок coredll.dll.