I recently upgraded from Fedora 33 to 34. Ever since, I cannot get rtiddsgen to funciton.
Here is the error messages:
<path>/rtiddsgen -stl -language C++ -namespace -verbosity 3 -replace -I ./ -d ./ ./ShapeType.idl
INFO com.rti.ndds.nddsgen.Main Running rtiddsgen version 2.5.2, please wait ...
line 1:2 mismatched character '0' expecting set null
ERROR com.rti.ndds.nddsgen.antlr.auto.IdlParser line 1:4 no viable alternative at input '"/tmp/rtiddsgen20_3022358701199897941.cc"'
ERROR com.rti.ndds.nddsgen.Main Fail: java.lang.Exception: The file couldn't be parsed and the rawTree wasn't generated
INFO com.rti.ndds.nddsgen.Main Done (failures)
This happens on every IDL file I compile, even the examples that ship with the product ( e.g. ShapeType.idl )
How can I get more details on what "line 1:2 mismatched character '0' expecting set null" means?
-Ed.
Hi ed_hourigan,
You are getting that error because when the preprocessor, GCC, is generating a temporal preprocessed IDL with '#0' in one of the lines line. That directive is not allowed in rtiddsgen. Then, it throws the error that you are seeing.
We have seen this error with GCC 11 but that version of GCC is not supported, and the fix for this issue is no planned yet.
It seems that this change has been introduced in GCC 11, so GCC 10 may work. Please be aware that the latest GCC version supported and tested by RTI is GCC 7.5.0 in Ubuntu 18.04 for Connext DDS 6.1.0.
If you do not need the preprocessor, adding the flag -ppDisable to rtiddsgen should work.
The flag -ppDisable prevents the use of the preprocessor, please see the rtiddsgen manual for more information.
Can you confirm your GCC version?
Jesus
-Edit-
I see in the version of rtiddsgen that you are using Connext DDS 5.3.1, the lastest GCC version supported for that release is 7.3.0 in Ubuntu 18.04.
My gcc version is:
g++ (GCC) 11.1.1 20210531 (Red Hat 11.1.1-3)
I will try the ppDisable flag.
Thanks.