monoの開発ブログ

VC++ 2010 ExpressでPOCOをビルドする

format: wordpress

POCO 1.4.0ではこの問題は修正されているそうです。

VC++ 2010 ExpressでPOCO 1.3.6p2をビルドしてみました。 基本的にはVC9向けの.slnファイルを変換してビルドしていけば問題ありませんが、Foundationのビルド時にエラーが起きるのでメモしておきます。

ThreadLocal.cppの修正

オリジナルでは73行目でTLSMap::value_type(key, 0)としてpairを生成しようとしていますが、0が数値と解釈されてしまいエラーになっているようです。そこで、以下のようにreinterpret_castをかましてやるとTLSAbstractSlotのポインタとして扱われるようになり、無事にビルドできます。

TLSAbstractSlot*& ThreadLocalStorage::get(const void* key)
{
    TLSMap::iterator it = _map.find(key);
    if (it == _map.end())
        return _map.insert(TLSMap::value_type(key, reinterpret_cast<TLSAbstractSlot*>(0))).first->second;
    else
        return it->second;
}