« 知らなければ損をする仕組み(生命保険) | トップページ | boost::threadをあきらめようか »

2010年7月19日 (月)

boost::thread でコンパイルエラー C2666

Joystick(ゲーム用のコントローラの総称)をC++から扱うのがこんなに面倒だとは知りませんでした。去年C#でJoystickを扱ったときは、本当にすぐに動いたのに。

さらに話をややこしくしているのが、boostライブラリの thread です。Joystickの接続監視と状態監視をするために thread を使ってやろうと思ったのですが、次のようなコンパイルエラーが出てしまいました。

警告 1 warning C4267: '初期化中' : 'size_t' から 'unsigned int' に変換しました。データが失われているかもしれません。 D:\Program Files\boost\boost_1_42\boost\thread\future.hpp 411
エラー 2 error C2666: 'boost::scoped_array<T>::operator []' : 2 のオーバーロード関数があいまいです。(新しい機能 ; ヘルプを参照) D:\Program Files\boost\boost_1_42\boost\thread\future.hpp 414
エラー 3 error C2666: 'boost::scoped_array<T>::operator []' : 2 のオーバーロード関数があいまいです。(新しい機能 ; ヘルプを参照) D:\Program Files\boost\boost_1_42\boost\thread\future.hpp 427
エラー 4 error C2228: '.unlock' の左側はクラス、構造体、共用体でなければなりません D:\Program Files\boost\boost_1_42\boost\thread\future.hpp 427

(以下省略)

googleってみると、おそらくこのエラーと同じものだと思います。Visual Studio 8.0というのは、Visual Studio 2005のことですね。ちなみに私の開発環境は以下の通り。

  • OSはWindows Vista Business + Serivce Pack 2
  • 統合開発環境は Visual Studio 2005 Standard Edition + Service Pack 1
  • C/C++コンパイラは Visual C++ 2005
  • Boostライブラリのバージョンは 1.42
  • その他、DirectXライブラリ、Apache log4cxxライブラリも使用

上記リンク先の掲示板(実際はメーリングリスト)では質問者自身が「こうやったらコンパイルエラーを止められたけど、それって安全なの?」とさらなる質問をしていますね。もうちょっとそのソースコードを読んでみて、安全なようならfuture.hppに修正を入れてしまおうと思います。

だめなら、ちょっと汚くなるけど.NET の Thread を使おうかな。

« 知らなければ損をする仕組み(生命保険) | トップページ | boost::threadをあきらめようか »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/167990/48914314

この記事へのトラックバック一覧です: boost::thread でコンパイルエラー C2666:

« 知らなければ損をする仕組み(生命保険) | トップページ | boost::threadをあきらめようか »

最近の写真