読者です 読者をやめる 読者になる 読者になる

Windows CE周りのworkaroundを投稿

C++

Boost.Asio - Windows CEにはlocaleがないのでendpointのコンパイルが通らない。
https://svn.boost.org/trac/boost/ticket/5427


Boost.DateTime(posix_time) - Windows CEにはの関数がないので、std::local_time, std::gmtimeを直接使用しているposix_timeが動かない。
https://svn.boost.org/trac/boost/ticket/5428


Boost.Assert - Windows CEにはstd::abortがないのでBOOST_ASSERTのコンパイルが通らない。
https://svn.boost.org/trac/boost/ticket/5429


Boost.System - Windows CEにはヘッダがなくてstd::strerrorもないのでerror_codeのコンパイルが通らない。
https://svn.boost.org/trac/boost/ticket/5430


Boost.Thread - Windows CEのworkardoundが、Cリンケージ関数の二重宣言エラーになる。
https://svn.boost.org/trac/boost/ticket/5431


これくらい直せば、Windows CE 6.0環境でBoost.ThreadとBoost.Asioが動きます。
ちなみに、プロジェクトで何人も使うものなので、Boostのソースは一切いじらずに外部から無理やりworkaroundを書いて動かしてます(インクルードガードをdefineしたりconfigを無理やり書き換えたり、自前のを無理やり認識させたりと、かなりえげつないことを…)。