[openrtm-users 01423] IDLのmodule定義を使うとimplコードがコンパイル不可

ysuga ysuga @ pop07.odn.ne.jp
2010年 9月 30日 (木) 10:36:08 JST


株式会社リバストの菅です.
お世話になっております.

OpenRTM-aist 1.0RELEASE C++版
(OpenRTM-aist-1.0.0-RELEASE_vc9_100212.msiでインストール)
を使っています.
OSはWindows (XP, Vista, 7)です.

サービスポートを使用するときに,
IDLを記述しますが,ネームスペースを使いたいので
module定義を使っています.

しかしながら,rtc-templateが生成する
**_impl.cppなどの実装コードに問題があるため,
そのままではコンパイルが通りません.
(既出ならすみません)


詳細:
以下のようにIDLを記述します.

module Amod {
	struct hoge {
		long a1;
		long a2;
	};

	interface hogehoge {
		long operation(out hoge arg);
	};
};

すると,生成されるimplクラスのコードが,たとえばヘッダーでは

hogehogeSVC_impl.h

class hogehogeSVC_impl
・・・中略
	CORBA::Long operation(hoge& arg);

};

のようになります.
この場合,hogeという構造体は,
Amodというモジュール内で宣言されているので,
AmodというC++の名前空間内に定義されるのですが,
hogehogeSVC_implクラスは,Amod名前空間外に宣言されているので,
本来であれば,operationというメソッドは,
	
誤	CORBA::Long operation(hoge& arg);
正	CORBA::Long operation(Amod::hoge& arg);

とされるべきではないでしょうか?
ヘッダーにもCPPにも同様の変更を加えねばならず不便です.
おそらくはrtc-templateの変更が必要になると思います.

IDLと,生成されたimplクラスのヘッダーとCPPコードを添付します.
ご確認ください.


それでは


P.S.
現在インストールされているOpenRTMの正確なバージョン
(ビルド番号など)を確認する方法はありますか?
エラーを報告するのにすこし不便です.
できればインストールされるフォルダに,
READMEやVersion.txtなどを入れていただけるとありがたいです.

-- 
//////////////////////////////////////////////
 菅 佑樹 (すが ゆうき)
E-mail: ysuga @ ysuga.net
研究者関連: http://www.ysuga.net/research
ロボット関連: http://www.ysuga.net/robot
インラインスケート: http://www.ysuga.net/inline

おしらせ: RTミドルウエアやってます
 http://www.ysuga.net/robot/rtm
/////////////////////////////////////////////
-------------- next part --------------
文字コード指定の無い添付文書を保管しました...
名前: ysuga_test.idl
URL:  <http://www.openrtm.org/pipermail/openrtm-users/attachments/20100930/868672db/attachment-0002.ksh>
-------------- next part --------------
文字コード指定の無い添付文書を保管しました...
名前: ysuga_testSVC_impl.cpp
URL:  <http://www.openrtm.org/pipermail/openrtm-users/attachments/20100930/868672db/attachment-0003.ksh>
-------------- next part --------------
文字コード指定の無い添付文書を保管しました...
名前: ysuga_testSVC_impl.h
URL:  <http://www.openrtm.org/pipermail/openrtm-users/attachments/20100930/868672db/attachment-0001.h>


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