我已经成功地为 Windows CE 6.0 构建了 STLPort 和 Boost c++。我可以在调试结束发布模式下使用 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]
我可以在发布模式下使用 boost 运行应用程序,但存在一些问题:
boost::this_thread::sleep_for(boost::chrono::seconds(1));将导致应用程序在发布模式下崩溃:如果先前的语句不存在,我将无法应用程序。似乎失去了一些依赖。我使用了 Dependency walker 并解决了所有依赖项(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- MT-P-1_53.DLL)。
在调试模式下,情况最糟糕:如果包含 boost 标头(boost/thread.hpp、boost/chorono.hpp),我将无法启动应用程序。似乎又缺少一些 dll,但依赖 walker 似乎一切正常。没有丢失的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
我是不是错过了什么。有人有想法吗?