Project

General

Profile

調査 #4258

TAOでorb.idlをインクルードしなかった場合に発生するエラーに関する調査

Added by n-miyamoto about 4 years ago. Updated about 4 years ago.

Status:
新規
Priority:
低め
Assignee:
Target version:
-
Start date:
10/12/2017
Due date:
% Done:

20%

Estimated time:

Description

TAOを使用した場合にIDLファイル内でorb.idlをインクルードしないと発生するエラーの内容を調べる。

MyServiceC(orb.idl有り).h (14.2 KB) MyServiceC(orb.idl有り).h n-miyamoto, 10/12/2017 10:28 PM
MyServiceC(orb.idl無し).h (12.5 KB) MyServiceC(orb.idl無し).h n-miyamoto, 10/12/2017 10:28 PM
MyServiceC.cpp (21.7 KB) MyServiceC.cpp n-miyamoto, 10/12/2017 10:28 PM

History

#1 Updated by n-miyamoto about 4 years ago

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" 

Also available in: Atom PDF