操作
調査 #4258
未完了TAOでorb.idlをインクルードしなかった場合に発生するエラーに関する調査
開始日:
2017/10/12
期日:
進捗率:
20%
予定工数:
説明
TAOを使用した場合にIDLファイル内でorb.idlをインクルードしないと発生するエラーの内容を調べる。
ファイル
n-miyamoto さんが約7年前に更新
- ファイル MyServiceC(orb.idl有り).h MyServiceC(orb.idl有り).h を追加
- ファイル MyServiceC(orb.idl無し).h MyServiceC(orb.idl無し).h を追加
- ファイル MyServiceC.cpp MyServiceC.cpp を追加
- 進捗率 を 0 から 20 に変更
Visual Studio 2017でビルドした場合に発生するエラーの内容は以下の通り。
ACEのバージョンは6.4.4、TAOのバージョンは2.4.4。
orb.idlをインクルードすると発生しない。
エラー LNK2005 "public: __cdecl TAO::unbounded_basic_string_sequence<char>::~unbounded_basic_string_sequence<char>(void)" (??1?$unbounded_basic_string_sequence@D@TAO@@QEAA@XZ) は既に MyServiceStub.obj で定義されています。
IDLコンパイルで生成したファイルは添付してあります。
CPPファイルは全く同じ。違いがあるのはヘッダーファイルのみ。
orb.idlをインクルードした場合にはヘッダーファイルで以下のファイルをインクルードします。
違うのはこの部分だけです。
#include "tao/String_Manager_T.h" #include "tao/AnyTypeCode/BooleanSeqA.h" #include "tao/AnyTypeCode/CharSeqA.h" #include "tao/AnyTypeCode/DoubleSeqA.h" #include "tao/AnyTypeCode/FloatSeqA.h" #include "tao/AnyTypeCode/LongDoubleSeqA.h" #include "tao/AnyTypeCode/LongSeqA.h" #include "tao/AnyTypeCode/OctetSeqA.h" #include "tao/AnyTypeCode/ShortSeqA.h" #include "tao/AnyTypeCode/StringSeqA.h" #include "tao/AnyTypeCode/ULongSeqA.h" #include "tao/AnyTypeCode/UShortSeqA.h" #include "tao/AnyTypeCode/WCharSeqA.h" #include "tao/AnyTypeCode/WStringSeqA.h" #include "tao/AnyTypeCode/LongLongSeqA.h" #include "tao/AnyTypeCode/ULongLongSeqA.h" #include "tao/AnyTypeCode/PolicyA.h" #include "tao/AnyTypeCode/Policy_ManagerA.h" #include "tao/AnyTypeCode/Policy_CurrentA.h" #include "tao/AnyTypeCode/ServicesA.h" #include "tao/AnyTypeCode/ParameterModeA.h" #include "tao/AnyTypeCode/orb_typesA.h" #include "tao/AnyTypeCode/Typecode_typesA.h" #include "tao/AnyTypeCode/WrongTransactionA.h"
#include "tao/BooleanSeqC.h" #include "tao/CharSeqC.h" #include "tao/DoubleSeqC.h" #include "tao/FloatSeqC.h" #include "tao/LongDoubleSeqC.h" #include "tao/LongSeqC.h" #include "tao/OctetSeqC.h" #include "tao/ShortSeqC.h" #include "tao/StringSeqC.h" #include "tao/ULongSeqC.h" #include "tao/UShortSeqC.h" #include "tao/WCharSeqC.h" #include "tao/WStringSeqC.h" #include "tao/LongLongSeqC.h" #include "tao/ULongLongSeqC.h" #include "tao/PolicyC.h" #include "tao/Policy_ManagerC.h" #include "tao/Policy_CurrentC.h" #include "tao/ServicesC.h" #include "tao/ParameterModeC.h" #include "tao/orb_typesC.h" #include "tao/Typecode_typesC.h" #include "tao/WrongTransactionC.h"
操作