Почему IDL неполный?

Я использую OpenDDS 3.4.1 в Linux и пытаюсь вручную скомпилировать IDL, потому что у меня уже есть система сборки для проекта, и я просто хотел бы сгенерировать необходимые файлы и интегрировать. Вот тестовый IDL, который я использую.

#include "orbsvcs/TimeBase.idl"

module StockQuoter {
#pragma DCPS_DATA_TYPE "StockQuoter::Quote"
#pragma DCPS_DATA_KEY "StockQuoter::Quote ticker"

    struct Quote {
        string ticker;
        string exchange;
        string full_name;
        double value;
        TimeBase::TimeT timestamp;
    };
};

Затем скомпилируйте IDL следующим образом:

$ opendds_idl ./StockQuoter.idl
processing ./StockQuoter.idl

$ tao_idl -I$DDS_ROOT/DDS -I$TAO_ROOT/orbsvcs ./StockQuoter.idl
processing ./StockQuoter.idl

Но как только я использую tao_idl для сгенерированного IDL, я получаю следующее:

$tao_idl -I$DDS_ROOT/DDS -I$TAO_ROOT/orbsvcs ./StockQuoterTypeSupport.idl

.../ACE_wrappers/bin/tao_idl: "./StockQuoterTypeSupport.idl", line 21: module must contain at least one declaration: ::StockQuoter
.../ACE_wrappers/bin/tao_idl: "./StockQuoterTypeSupport.idl", line 21: module must contain at least one declaration: ::StockQuoter
.../ACE_wrappers/bin/tao_idl: "./StockQuoterTypeSupport.idl", line 21: module must contain at least one declaration: ::StockQuoter
.../ACE_wrappers/bin/tao_idl: "./StockQuoterTypeSupport.idl", line 21: module must contain at least one declaration: ::StockQuoter

Конечно, результат означает, что я не могу зарегистрировать поддержку типов в своих публикациях/подписках, потому что необходимые объекты отсутствуют, что я могу подтвердить, просмотрев файл StockQuoterTypeSupport.idl. Я просмотрел главу 8 руководства разработчика OpenDDS для параметров opendds_idl, но, похоже, ничего не сработало. Любые идеи?

Изменить:
Вот сгенерированный IDL StockQuoterTypeSupport.idl.

/* Generated by .../DDS/bin/opendds_idl version 3.4.1 (ACE version 5.6a_p14)  
   running on input file ./StockQuoter.idl*/
#ifndef OPENDDS_IDL_GENERATED_STOCKQUOTERTYPESUPPORT_IDL_X54N2R
#define OPENDDS_IDL_GENERATED_STOCKQUOTERTYPESUPPORT_IDL_X54N2R
#include "./StockQuoter.idl"

#include "dds/DdsDcpsInfrastructure.idl"
#include "dds/DdsDcpsPublication.idl"
#include "dds/DdsDcpsSubscriptionExt.idl"
#include "dds/DdsDcpsTopic.idl"
#include "dds/DdsDcpsTypeSupportExt.idl"

/* Begin MODULE: StockQuoter */

/* Begin STRUCT: Quote */

module StockQuoter {
};

/* End STRUCT: Quote */

/* End MODULE: StockQuoter */
#endif /* OPENDDS_IDL_GENERATED_STOCKQUOTERTYPESUPPORT_IDL_X54N2R */

person Ender    schedule 13.12.2013    source источник
comment
То, что генерируется в StockQuoterTypeSupport.idl, должно содержать интерфейсы QuoteTypeSupport, QuoteDataWriter и QuoteDataReader.   -  person Johnny Willemsen    schedule 13.12.2013
comment
Это те объекты, которые мне нужны, но они почему-то не появляются. Я разместил сгенерированный IDL. Я также запускал его в подробном режиме и не увидел ничего необычного.   -  person Ender    schedule 13.12.2013
comment
Похоже, проблема с компилятором opendds_idl. Можете ли вы попробовать перекомпилировать OpenDDS, используя ACE/TAO x.2.3, который вы можете получить на download.dre.vanderbilt.edu . У меня есть эта комбинация в моей системе, и она работает без проблем.   -  person Johnny Willemsen    schedule 13.12.2013
comment
Я тоже задавался этим вопросом. Я вернусь к нему в середине следующей недели и дам вам знать, как все прошло, если это ответ.   -  person Ender    schedule 14.12.2013
comment
@JohnnyWillemsen Спасибо, что-то не так собралось, теперь работает. Если вы хотите сделать это ответом, я отмечу это так.   -  person Ender    schedule 20.12.2013
comment
да, пожалуйста, отметьте это как ответ   -  person Johnny Willemsen    schedule 20.12.2013
comment
@JohnnyWillemsen Если я что-то не упустил, ответьте как ответ, а не как комментарий, и тогда я отмечу это как таковое.   -  person Ender    schedule 21.12.2013


Ответы (1)


Похоже, проблема с компилятором opendds_idl. Можете ли вы попробовать перекомпилировать OpenDDS, используя ACE/TAO x.2.3, который вы можете получить на сайте download.dre.vanderbilt.edu. У меня есть эта комбинация в моей системе, и она работает без проблем.

person Johnny Willemsen    schedule 22.12.2013
comment
Это должно быть решено с выпуском OpenDDS 3.5. - person Johnny Willemsen; 09.02.2014