[openrtm-users 02579] Re: Fedora17(32bit)上でのOpenRTM(C++)コンパイル

Geoffrey Biggs geoffrey.biggs @ aist.go.jp
2012年 6月 8日 (金) 09:28:07 JST


安藤様

ジェフです。

2012/6/8 Ando Noriaki <n-ando @ aist.go.jp>
>
> > (3) __sync_fetch_and_add_4 のエラー原因の検索
> > 上記のエラーメッセージをググってみました。
> > すると、いろいろな情報が見つかりました。
> >
> > __sync_fetch_and_add_4 がlegacyなインタフェースで、
> > C++では、std::atomic<>に置き換わったので、
> > __sync_fetch_and_add_4 を使わないようにソースを
> > 書き換えれば良いという情報がありました。
>
> なるほどそうでしたか。これってC++0x11あたりで導入される機能ですよね。
> 旧C++とC++0x11が混ざって悪さしているとかですかね?
>

std::atomicはC++11から導入されたからまだオフィシャルなコンパイラのサポートはゼロです。オフィシャルではないならVC2011とgcc
4.5(?)以上にありますが、フラグを設定することが必要です。(そして、C++11からのフィーチャーならlegacyの方はまだあるはずですが…)

したがって、使うことに注意が必要でしょう。coilにstd::atomicを既定として導入するとVC2010でもコンパイルできなくなります。オプションにした方がいいと思います。以下のファイルの68行目は参照になると思います。

https://github.com/gbiggs/tide/blob/api_reorg/include/tide/tide_config.h.in
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
URL: <http://www.openrtm.org/pipermail/openrtm-users/attachments/20120608/f6ee4856/attachment-0001.html>


More information about the openrtm-users mailing list