Повышение C ++ и Windows CE 6.0

Я успешно построил STLPort и Boost c ++ для Windows CE 6.0. Я могу запустить приложение с Windows CE 6 и STLPort как в режиме окончательного выпуска отладки.

Я построил boost с помощью следующего пакетного файла:

@echo off
cls

:build

:release

echo building boost in release shared library

bjam ^
--with-system ^
--with-chrono ^
--with-date_time ^
--with-thread ^
--with-atomic ^
toolset=msvc-9.0~CEPlatform ^
variant=release ^
threading=multi ^
stdlib=stlport-5.2.1 ^
link=shared ^
runtime-link=shared

:debug

echo building boost in debug shared library

bjam ^
--with-system ^
--with-chrono ^
--with-date_time ^
--with-thread ^
--with-atomic ^
toolset=msvc-9.0~CEPlatform ^
define=_STLP_DEBUG=1 ^
variant=debug ^
threading=multi ^
stdlib=stlport-5.2.1 ^
link=shared ^
runtime-link=shared

goto exit

:exit
pause

Я изменил user-config.jam согласно этой ссылке: [http://stackoverflow.com/questions/15906901/build-boost-c-wince/15939679#15939679][1]

Я могу запустить приложение с надстройкой в ​​режиме выпуска с некоторыми проблемами:

повышение :: this_thread :: sleep_for (повышение :: хроно :: секунд (1));

приведет к сбою приложения в режиме выпуска: я не могу приложение, если предыдущий статус отсутствует. Кажется, что некоторые зависимости потеряны. Я использовал средство обхода зависимостей, и все зависимости разрешены (COREDLL.DLL, STLPORT.5.2.DLL, BOOST_SYSTEM-VC90-MT-P-1_53.DLL, BOOST_THREAD-VC90-MT-P-1_53.DLL, BOOST_DATE_TIME-VC90- МТ-Р-1_53.DLL).

В режиме отладки все хуже: я не могу запустить приложение, если я включаю заголовок boost (boost / thread.hpp, boost / chorono.hpp). Кажется снова, что некоторые DLL отсутствуют, но с ходунком зависимостей все кажется в порядке. Отсутствует отсутствующая DLL … Связанная DLL:
COREDLL.DLL, STLPORTSTLD.5.2.DLL, BOOST_SYSTEM-VC90-MT-GDP-1_53.DLL, BOOST_THREAD-VC90-MT-GDP-1_53.DLL, BOOST_DATE_TIME-VC90-MT-GDP-1_53.DLL

Я что-то пропустил. У кого-нибудь есть идея?

3

Решение

CE имеет ограничение в 32 символа длины имени DLL при загрузке с неявной загрузкой. Сумасшедший, что это все еще не исправлено в CE (не говоря уже о правильном сообщении об ошибке), или обойти в Boost Подход, который мы использовали на работе, заключался в том, чтобы использовать «bsystem» вместо «boost_system» (аналогично «bthread», «bregex» и т. Д.) #Ifdef UNDER_CE. Может быть, мы также удалили «-mt», так как однопоточный код не поддерживается в CE, но я должен был проверить источники.

3

Другие решения

Опции, возможно, были изменены в более поздней версии Boost.
Я использую —layout = system option и макрос BOOST_AUTO_LINK_NOMANGLE, и они работают.

Я использую Boost 1,55.

0

По вопросам рекламы [email protected]