0

I'm using OpenDDS 3.4.1 on Linux and trying to manually compile an IDL because I already have a build system for the project and would just like to generated the needed files and integrate. Here a test IDL I'm using.

#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;
    };
};

Then compile the IDL as follows:

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

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

But once I get to using tao_idl on the generated IDL, I get the following:

$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

Of course the result means I can't register type support in my pub/subs because the needed objects are missing which I can confirm by looking at the StockQuoterTypeSupport.idl file. I looked at chapter 8 of the OpenDDS dev guide for opendds_idl parameters, but nothing seemed to work. Any ideas?

Edit:
Here's the generated 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 */
Ender
  • 1,652
  • 2
  • 25
  • 50
  • What is generated in StockQuoterTypeSupport.idl, it should contain the QuoteTypeSupport, QuoteDataWriter, and QuoteDataReader interfaces. – Johnny Willemsen Dec 13 '13 at 13:31
  • Those are the objects I need, but for some reason they don't appear. I posted the generated IDL. I also ran it in verbose mode, and saw nothing out of the ordinary. – Ender Dec 13 '13 at 16:42
  • 1
    It looks there is a problem with the opendds_idl compiler. Can you try to recompile OpenDDS using ACE/TAO x.2.3 which you can obtain from http://download.dre.vanderbilt.edu/. I have that combination on my system and that works without a problem. – Johnny Willemsen Dec 13 '13 at 18:40
  • I wondered about that as well. I'll be back on it mid-next week and let you know how it went in case its an answer. – Ender Dec 14 '13 at 02:58
  • 1
    @JohnnyWillemsen Thnx, something didn't build right, works now. If you want to make this an answer, I'll mark it so. – Ender Dec 19 '13 at 20:22
  • @JohnnyWillemsen Unless I'm missing something, respond as an answer, not a comment, and then I'll mark it as such. – Ender Dec 21 '13 at 01:01

1 Answers1

2

It looks there is a problem with the opendds_idl compiler. Can you try to recompile OpenDDS using ACE/TAO x.2.3 which you can obtain from download.dre.vanderbilt.edu. I have that combination on my system and that works without a problem.

Johnny Willemsen
  • 2,942
  • 1
  • 14
  • 16