Spec-Zone.ru › Qt 5.6

Windows CE — Работа с пользовательскими SDK

При работе с пользовательским SDK для Windows CE Qt предоставляет простой способ добавить его поддержку в вашу среду разработки. Следующий учебник охватывает создание спецификации для Qt для платформ Windows CE.

Создание пользовательской спецификации сборки

Создайте подкаталог в папке mkspecs каталога Qt. Новые спецификации для Qt для Windows CE следуют этой схеме именования:

wince<version><SDK-shortcut>-[architecture]-msvc2005

Использование этой схемы позволяет qmake определить, что вы собираете Qt для Windows CE, и соответственно настроить процесс компиляции.

Создайте файлы qmake.conf и qplatformdefs.h внутри нового каталога спецификации. Обратитесь к реализации других спецификаций Windows CE, включенных в каталог mkspecs, чтобы увидеть, что необходимо для успешной сборки Qt для Windows CE.

Настройка параметров

По сравнению с настольными версиями, Qt для Windows CE требует двух дополнительных параметров:

  • CE_SDK указывает имя SDK.
  • CE_ARCH указывает информацию о целевой архитектуре.

Ниже приведен пример конфигурации для пользовательского SDK, который мы называем «CustomSDK»:

CE_SDK        = Windows Mobile 5.0 Pocket PC SDK
CE_ARCH       = ARMV4I

Примечание: Запуск qmake для генерации файлов проекта Visual Studio для Windows CE в настоящее время не производит корректный результат.

Кроме того, большинство SDK Windows CE используют дополнительные параметры компилятора. Их можно указать, расширив значение DEFINES.

Например, с CustomSDK переменная DEFINES расширяется следующим образом:

DEFINES += QT_NO_CLIPBOARD QT_NO_ACCESSIBILITY QT_NO_NATIVE_GESTURES QT_NOSTANDARDSHELL_UI_MODEL _CRT_SECURE_NO_DEPRECATE _WIN32_WCE=0x700 $$CE_ARCH _AMRV7_ armv7 _ARM_

Перекрестная среда компиляции для пользовательского SDK

Qt для Windows CE требует только того, чтобы mkspec, указанный с помощью -xplatform, был настроен, как описано выше.

Выбор среды пользовательского SDK будет происходить путем конкатенации CE_SDK и CE_ARCH. Это создает строку, которая может быть найдена в «%ProgramFiles%\Microsoft Visual Studio 9.0\VC\vcpackages\WCE.VCPlatform.xml» и содержит правильную среду. Если вы не уверены в имени SDK и архитектуре для вашего SDK, вы можете найти её в этом файле.

Компиляция Qt для пользовательского SDK

Windows CE обладает высокой настраиваемостью, поэтому некоторые SDK могут иметь упрощённую настройку. В зависимости от конфигурации SDK Qt может не скомпилироваться в своей стандартной конфигурации, так как Qt для Windows CE предназначен для совместимости со стандартной настройкой SDK. Каждый Makefile, сгенерированный qmake и не помеченный для сборки для хостовой системы, будет собирать проекты WindowsCE для SDK, с которым был собран Qt. Нет необходимости устанавливать пользовательскую среду помимо среды Visual Studio 2005/2008.

Однако, возможно исключить функции Qt и создать версию, которая будет компилироваться для желаемого SDK.

Запуск приложений Qt на пользовательском устройстве

Иногда устройство Windows CE создано с конфигурацией, отличной от конфигурации соответствующего SDK. В этом случае символы, которые были доступны на этапе компоновки, могут отсутствовать в библиотеках выполнения.

К сожалению, операционная система не выдаст сообщение об ошибке, в котором указаны отсутствующие символы. Вместо этого появится окно с сообщением:

app.exe is not a valid CE application!

Чтобы определить отсутствующие символы, необходимо создать временное приложение, которое пытается динамически загрузить библиотеки Qt для Windows CE с использованием LoadLibrary. Для этого можно использовать следующий код:

wchar_t* libraries[] = {
    L"QtCore4.dll",
    L"QtGui4.dll",
    0
};

for (int i = 0; libraries[i] != 0; ++i) {
    HINSTANCE instance = LoadLibraryW(libraries[i]);
    OutputDebugStringW(libraries[i]);
    if (instance != NULL) {
        OutputDebugStringW(L" : Successfully instantiated\n");
        FreeLibrary(instance);
    } else {
        OutputDebugStringW(L" : Could not be loaded\n");
    }
}

После компиляции и развертывания приложения, а также библиотек Qt, запустите удаленный отладчик. Отладчик затем отобразит порядковый номер неразрешённого символа.

Поищите части Qt, которые полагаются на эти функции, и отключите их с помощью функциональности QFeatures.

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

  • Перетаскивание
  • QClipboard
  • QCursor

Обратитесь к документации Microsoft здесь за информацией о том, что такое порядковые номера и как их можно создать. Информация о получении соответствующего имени символа по заданному порядковому номеру также доступна в документации Microsoft.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/windowsce-customization.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API