[choreonoid-users-ja 00035] Re: [MacOSX] build error in MultiAffine3Seq.cpp

Shin'ichiro Nakaoka s.nakaoka @ aist.go.jp
2012年 7月 22日 (日) 20:00:43 JST


菅さん

こんにちは、産総研の中岡です。
エラー報告ありがとうございます。

すみません、boostのSequenceというものが如何なるものかググってみたのです
が、ざっとみたところでは該当するものが見つけられませんでした。
boostのどのバージョンをお使いで、Sequenceという名前がどのモジュールで定
義されているかについて、分かる範囲で教えていただけますでしょうか。
できれば、エラーメッセージもあるとうれしいです。

> これはどちらをお使いですか?(おそらくcnoid側かと・・・)

はい、これはcnoidで定義されている方を想定しています。

ついでに説明しますと、cnoid::Sequenceというのは以前のバージョンで
YamlSequence として定義していたものです。
今回、名前をSequenceに変更しました。
その理由は、

・このクラスや他の関連クラス(Mapping等)は、必ずしもYAMLに依存するもので
はなく、YAMLとは独立した汎用的なデータ構造として使えるものであるため。

・コレオノイドで頻繁に使うクラスなので、上の背景と併せて、コンパクトな名
前で使えた方がうれしいため。

というところにあります。

もちろん、あまり名前をころころ変えるのはよくないのですが、
今回の変更は、CMakeのCNOID_ENABLE_BACKWARD_COMPATIBILITY を ON にしてお
くと(デフォルトでONになってます)、以前と同じヘッダとクラス名も使えるよ
うにしてあります。
ただ、プラグイン開発においては、なるべくこのスイッチをOFFにして、新しい
方に対応させておいてもらえるとうれしいです。

ただ、やはりSequenceという名前にしてしまうと、衝突の危険性が高かったかも
しれません。このあたり、記述の簡潔さとのバランスが難しいところですが…。

以上よろしくお願いいたします。

(07/21/12 18:28), Yuki Suga wrote:
> Choreonoid MLの皆様:
> お世話になります.フリーランスの菅です.
> 
> ChoreonoidがMacOSXに対応したということで,
> こちらで試してみていますがビルドで問題が発生したので報告します.
> 
> MacOSX+Xcode4.3.3です.
> Eigen, boost, OSG, libyamlをソースからインストールし,
> Choreonoidのビルドを試しています.
> 
> cmakeは
> cmake -DEIGEN_DIR=/usr/local/include/eigen3 -DOSG_DIR=/usr/local/include ../
> のようにコマンドラインで環境変数を設定しています.
> 
> この後,makeを行うと,MultiAffine3Seq.cppでエラーが起こりました.
> 160行目の
> static readAffine3(const Sequence& node, Affine3& out_value)
> の部分で,Sequenceというクラス名が,
> cnoidネームスペースと,boostネームスペースの両方にまたがっており,
> またどちらもusing namespaceを使っているため,
> 曖昧であることが問題と考えられます.
> これはどちらをお使いですか?(おそらくcnoid側かと・・・)
> 
> 他の方は問題は起きていないのでしょうか?
> 
> 
> 基本的な問題で恐縮なのですが,
> 対応方法等,お教えいただければと存じます.
> 
> 
> それでは
> 


-- 
Shin'ichiro Nakaoka <s.nakaoka @ aist.go.jp>


choreonoid-users-ja メーリングリストの案内