« boost::threadをあきらめようか | トップページ | URGライブラリをC#で使えるようにする »

2010年7月22日 (木)

戦略変更を考えたほうがいいかもしれない

ここのところしばらく Visual C++ 2005 で boost::thread を動かそうと格闘してきましたが、うまくいかないので諦めたほうがよいと思うようになってきました。しょうがないから .NET FrameworkのSystem::Threading::Thread を使おうと思って試してみましたが、こちらもまたひと悶着。

.NET のThread はマネージドクラスしか相手にしてくれないようです。普通のC++のつもりで作ったクラスをマネージドクラスにするには、class 宣言の頭に __gc をつけて、コンパイルオプションで「共通言語ランタイムサポート、古い構文(/clr:oldSyntax)」をつけてやる必要があります。で、やって見たんですがうまくビルドされません。おそらく、ヘッダファイルの多重インクルードを避けるために前方参照宣言だけを集めたヘッダファイル(fwd_declaration.h)を作ったので、これがインクルードされている cpp ファイルは全部「古い構文」を選ばなきゃいけない。でもそれをやると、共通言語ランタイムサポートを使用したくないやつら(Apache log4cxx、boost)などがビルドできなくなる。厄介ですね。

かみやんさんから「CのライブラリをPInvokeで、C#からコールするっていう手もありますよ」とのアドバイスをいただいたので、ここらで戦略転換して昨年度開発したC#ベースに戻ったほうがいいのではないかと思い始めました。ここ何カ月か分は無駄になりますが、使える時間も減ってきたので去年の開発済み資産を使いまわしたほうが早いという理由もあります。boostライブラリは「使ってみたかった」というだけの話なので、C++で作る戦略は捨ててしまったほうが先に進めそうです。

« boost::threadをあきらめようか | トップページ | URGライブラリをC#で使えるようにする »

コメント

わざわざリンクありがとう。
イラネって感じかもしれませんが、AibiUIのソースもブログで公開していて、URGへのアクセスクラスやTDS01Vへのアクセスクラスもあるので、よかったら参考にどうぞ。
http://d.hatena.ne.jp/kamiyan2/20100124

コメントを書く

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

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

トラックバック

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

この記事へのトラックバック一覧です: 戦略変更を考えたほうがいいかもしれない:

« boost::threadをあきらめようか | トップページ | URGライブラリをC#で使えるようにする »

最近の写真