2013-04-15 6 views
3

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

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

@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 

Я изменял пользовательский config.jam Accordin по этой ссылке: [http://stackoverflow.com/questions/ 15906901/наращивание наддува с-вздрогнуть/15939679 # 15939679] [1]

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

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

приведет к сбою приложения в режиме деблокирования: я не могу использовать приложение, если предыдущая статута отсутствует. Кажется, что некоторая зависимость теряется. Я использовал Walker Dependency и все зависимости разрешены (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/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, но мне нужно проверить источники.

+2

this_thread :: sleep_for не работает по той же причине. Я увеличил с помощью --layout-system и добавил определение BOOST_AUTO_LINKAGE_NOMANGLE. Теперь у меня есть имя в boos_LIBRARY_NAME.dll. Большое спасибо!!! –

+0

А, хорошо знать, что Boost поддерживает это, хотя и по-другому! –

+0

Но будьте внимательны, потому что имя библиотеки отладки и выпуска одинаково, поэтому вам нужно построить режим отладки с помощью --stagedir =./Stage/debug и в релизе --stagedir/release –

0

Возможно, варианты были изменены более поздней версией boost. Я использую --layout = системный параметр и макрос BOOST_AUTO_LINK_NOMANGLE, и они работают.

Я использую boost 1.55.

Смежные вопросы