Построение и отладка проектов устройств Visual C++
Обновлен: Ноябрь 2007
Построение и отладка проектов для устройств немного отличается от построения и отладки проектов для настольных ПК.
Ниже приведен список приемов построения и отладки:
По умолчанию потоковая модель для проектов устройств свободна. Однако Windows CE не полностью поддерживает маршалинг COM и связанные определения, если параметр DCOM не выбран при построении образа ОС CE. Поэтому на некоторых платформах CE компилятор может создать предупреждения о поддержке DCOM, отдельного и определения многопоточности. Это предупреждение предназначено для рекомендации включения обработки потоков и синхронизацию в собственный код. Например, при компиляции проекта устройства ATL компилятор может создать предупреждение об определении _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA. Также это применимо к сценариям, таким как создание COM-объектов, потребление веб-служб и COM-объектов ATL на платформе Windows Mobile. Можно определить этот флаг в основном файле заголовка для однопотоковых объектов, как показано ниже: #define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA. Если код поддерживает многопоточность можно игнорировать это сообщение без угроз для безопасности. Дополнительные сведения о COM, DCOM и потоковых моделях в Windows CE см. в разделах Службы компонентов (COM и DCOM) и COM-потоки и процессы из документации по Windows CE 5.0.
По умолчанию приложения для устройств, написанные на машинном коде, созданы с использованием статической компоновки. Можно добавить приведенные ниже библиотеки времени выполнения в свойство проекта Дополнительные файлы, если следует переключиться на динамическую компоновку:
Конфигурации построения выпуска приложений MFC
Добавьте приведенные ниже библиотеки DLL времени управления в свойство проекта Дополнительные файлы: msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<имя_проекта>|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<имя_проекта>|0;MFC80U.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<имя_проекта>|0;
Конфигурации построения отладки приложений MFC
Добавьте приведенные ниже библиотеки DLL времени выполнения в свойство проекта Дополнительные файлы: msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<имя_проекта>|0;msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<имя_проекта>|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<имя_проекта>|0;MFC80Ud.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<имя_проекта>|0;
Конфигурации построения выпуска приложений ATL
Добавьте приведенные ниже библиотеки DLL времени управления в свойство проекта Дополнительные файлы: msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<имя_проекта>|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\<имя_проекта>|0;
Конфигурации построения отладки приложений ATL
Добавьте приведенные ниже библиотеки DLL времени выполнения в свойство проекта Дополнительные файлы: msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\%CSIDL_PROGRAM_FILES%\<имя_проекта>|0;msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\%CSIDL_PROGRAM_FILES%\<имя_проекта>|0;atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\%CSIDL_PROGRAM_FILES%\<имя_проекта>|0;
Дополнительные сведения о загрузке библиотек DLL Windows CE см. в сведениях о загрузке библиотеки DLL Windows CE LoadLibrary.
Примечание. Загрузка нескольких библиотек DLL с одним именем в одно и то же время из различных каталогов, например \Windows\aDLL.dll и \Program Files\aDLL.dll, может привести к непредсказуемым результатам. Рекомендуется загрузить одну копию библиотеки DLL единовременно или ожидать вызова первой загруженной DLL.
Ниже приведены некоторые дополнительные сведения, которые следует учесть:
При переносе в MFC 8.0 # определите _WIN32_WCE_PSPC. По умолчанию этот флаг не определен в MFC 8.0.
Параметр ARM4T не поддерживается в раскрывающемся списке Скомпилировать для архитектуры при работе с Pocket PC 2003 или Smartphone 2003. Чтобы найти этот список в диалоговом окне Страница свойств <имя_проекта>, щелкните Свойства конфигурации, затем C/C++, выберите Дополнительно и выберите пункт Скомпилировать для архитектуры.
Функции GAPI используются в C++, но не в C. Включение gx.h в код работает только в C++. При использовании в коде GAPI не выполняйте компиляцию с параметром /TC.
В MFC 8.0 для устройств можно управлять созданием и вставкой CommandBar. Элемент CDialog::m_pWndEmptyCB больше не поддерживается. Этот элемент использовался для указания на пустой класс Класс CCommandBar, также называемый MenuBar на платформе Pocket PC, который создавался для диалогового окна, на него можно ссылаться для вставки собственной строки меню MenuBar.
Checked::_strlwr_s, _strlwr_s_l, _mbslwr_s, _mbslwr_s_l, _wcslwr_s, _wcslwr_s_l, Checked::tcslwr_s и Checked::gcvt_s предоставляются для платформ, использующих Windows CE.
Флаг _WIN32_WCE_PSPC больше не определяется, вместо него можно использовать флаг _WIN32_WCE_PSPC WIN32_PLATFORM_PSPC.
При переносе приложения STL включите <deque> вместо #include <deque.h>.
Интегрированная среда разработки поддерживает несколько платформ. При размещении объектов MFC или ActiveX ATL в диалоговом окне ресурсов проекта устройства необходимо создать и зарегистрировать эквивалентный элемент управления в эквивалентном проекте ActiveX для настольного ПК. Этот элемент управления может быть добавлен в шаблон диалогового окна устройства в редакторе ресурсов. Он будет работать корректно. Версии элемента ActiveX для устройств и для настольных компьютеров должны содержать одинаковый GUID и свойства времени разработки, такие как цвет фона.
См. также
Задачи
Практическое руководство. Подготовка устройства в проекте Visual C++
Основные понятия
Параметры отладки и развертывания для проектов устройств Visual C++
Параметры отладки и развертывания для проектов устройств Visual C++