[openrtm-users 03377] Re: 二項演算子 '<<=' でコンパイルエラー

MASUTANI Yasuhiro masutani @ osakac.ac.jp
2017年 2月 16日 (木) 00:34:06 JST


安藤様,

大阪電通大の升谷です.
時間が空いてしまい申し訳ありません.

On Mon, 13 Feb 2017 23:31:57 +0900,
Ando Noriaki <n-ando @ aist.go.jp> wrote:
> 
> ヘッダのインクルードパスは大体あっているように見えますが、
> -Dオプションがだいぶ足りないみたいですね。

はい.一つの原因はこれでした.

> まず、このコンポーネントのソースコードは1.1.2のRTCBUilderで
> 生成したものでしょうか?

違います.GitHubで公開されている「RT-Components for the Point Cloud Library」

  https://github.com/gbiggs/rtcpcl/

に含まれているCMakeLists.txtなどから生成したものです.だいぶ古いものの
ようですが,Ubuntuではそのままcmake, makeできています.それをWindows
に移植しようとしています.

> そうでないなら、FindOpenRTM.cmake
> のようなファイルがRTCのcmakeディレクトリ内にないか確認してください。
> もしあるようでしたら、削除するかFIndOpenRTM.cmake をFind____.cmake
> などにリネームしてみてください。

それをしなくても,find_package(OpenRTM)だけで,適切な
OpenRTMConfig.cmake を読み込んでいましたが,

add_definitions(${OPENRTM_CFLAGS})
add_definitions(${OMNIORB_CFLAGS})

が抜けていました.申し訳ありません.これによって最初の

>   C:\Program Files\OpenRTM-aist\1.1.2\rtm/CorbaPort.h(1229): error C2664:
> 'PortableServer::POA::servant_to_id' : 1 番目の引数を 'PortableServer::RefCountServantBase
> *' から 'PortableServer::Servant' に変換できません。(新しい機能 ; ヘルプを参照)

の問題は解消しました.また,2番目の

>   C:\Program Files\OpenRTM-aist\1.1.2\rtm/OutPort.h(216): error C2678:
> 二項演算子 '<<=' : 型 'CORBA::Any' の左オペランドを扱う演算子が見つかりません (または変換できません) (新しい動作;
> ヘルプを参照)。

の問題は,最初のころにidlの働きをよく理解しておらず,pointcloud.idlか
ら生成されるpointcloud.hhが見つからないので,Ubuntuから持ってきたもの
が残ったままになっており,そちらが#includeされていために起こっていまし
た.

他にもいろいろ問題はあったのですが,ほぼ解消して,Windowsへの移植の目
途が立ちました.その成果は近いうちにGitHubで公開します.

ありがとうございました.

-- 
# 升谷 保博
# 大阪電気通信大学 総合情報学部 情報学科
# 575-0063 大阪府四條畷市清滝1130-70 / TEL&FAX: 072-876-5107


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