Build RTI DDS and Connext DDS from source

34 posts / 0 new
Last post
gorlak's picture
Offline
Last seen: 9 years 8 months ago
Joined: 06/04/2013
Posts: 8
Build RTI DDS and Connext DDS from source

 

Hi there!

First off, I applaud RTI for providing source code for the core libraries and utilities for RTI and Connext DDS!  Kudos!

My main question is: are there any resources on how to properly build the source package?  I couldn't find any documentation for doing this in the Core Library and Utilities Getting Started, Users Manual, or Platform Notes pdf files.  Perhaps I missed something obvious, though (I hope so)!

I have the contents of RTI_Connext_DDS-5.0.0-src.zip compiling and linking correctly into an application for windows (using Visual Studio 2008 SP1, a supported compiler and CRT), and linux (Ubuntu 13.04), however I am seeing some differences with regards to library behavior (windows is my primary dev platform).  Specifically, I am getting some exceptions thrown when creating a domain participant (something is going wrong in the property system with respect to one of the transport implementations).  These exceptions are not thrown when using the pre-built libraries.

The layout of the source package seems significantly different than the headers provided by the pre-compiled packages, so it appears there is some non-trivial work happening to build and package the binary distribution.  It would help immensely to have a little bit of information about:

* What the proper design for handling peer, h, and share header folders when compiling down source, as well as how to collapse them into coherent include folders

* Perscribed preprocessor macros to use for source compilation (seems pretty straightforward... but it would be nice to double-check)

* Information on custom linked module sections (if any) that may be necessary for proper execution

I have implemented my build of dds via a premake (http://industriousone.com/premake) script to generate build files (make for linux, vs projects for windows), and I could potentially provide it as a diagnostic tool if anyone wants to see it (or community resource if to be made to work identically to the pre-built libraries).

Fernando Garcia's picture
Offline
Last seen: 2 months 4 weeks ago
Joined: 05/18/2011
Posts: 200

Hello Gorlak,

I am really interested in the use of premake to compile the sources of RTI Connext. I have used GNU autotools and complex makefiles in some projects, but I have never tried premake and its Lua scripts.

Could you provide the build files you have used and explain the process you have followed to obtain them? I will try to build the sources with your scripts and help you figure out if there is any piece missing in the puzzle.

Fernando.

gorlak's picture
Offline
Last seen: 9 years 8 months ago
Joined: 06/04/2013
Posts: 8

Here you go.  I have tested this particular script with premake 4.3 (http://industriousone.com/premake/download) and vs2008

Premake is pretty easy to understand, and they have a decent tutorial that does a better job that I could ever do.  I recommend you just try and read through it and I get you will get the gist.  The only real tricky bits are ** for recursive file directives and configuration{} to reset the active configuration context.  The funky indentation is on purpose and meant to help track what the active context is.  For example calls to project() create a project in the current solution created by solution(), and likewise calls to configuration "windows" make subsequent calls to defines{} or flags{} only apply to the filtered "windows" configuration, so configuration{} resets to all configuration.  If you are having trouble spend 20min or so reading over http://industriousone.com/premake-quick-start and http://industriousone.com/sample-script.

Note there are some bizzare excludes of files that won't compile and don't appear to be necessary for proper linkage.  See pres.1.0/srcC/participant/ParticipantParam.c and reda.1.0/srcC/circularList/CircularList.c, I couldn't get these files to compile even after fiddling with inclusion a bit... perhaps they are detritus that aren't meant to still be distributed?  Tough to tell without any build instructions.

32-bit windows and 64-bit linux are our primary targets.


I would love to get this working properly.  Thanks so much for helping out :)

File Attachments: 
Fernando Garcia's picture
Offline
Last seen: 2 months 4 weeks ago
Joined: 05/18/2011
Posts: 200

Hello Gorlak,

Last week I had some time to try out your Premake scripts. I run them on Linux 32-bit and identified some of the things you will need in that platform. As you suspected, you were missing some pound defines, these are the ones I added:

"LINUX",
"RTI_UNIX",
"RTI_LINUX",
"RTI_GCC4",
"RTI_LINUX26",
"RTI_POSIX_THREADS",
"RTI_POSIX_SEMAPHORES",
"RTI_CPU_AFFINITY",
"RTI_ENDIAN_LITTLE",
"RTI_THREADS",
"RTI_MULTICAST",
"RTI_SHARED_MEMORY",
"RTI_IPV6"

If you want to compile for 64-bit Linux it seems you may also need:

"RTI_64BIT",
"RTI_X64CPU"

For XML you will also need:

"HAVE_MEMMOVE",
"XML_STATIC",
"XML_DTD",

You are right about the files you excluded from the build -- they do not seem to be used.

Please, let me know if you find any issues getting your build on Linux. In the meantime I will also try your scripts on Windows.

Thanks,
Fernando.

gorlak's picture
Offline
Last seen: 9 years 8 months ago
Joined: 06/04/2013
Posts: 8

Awesome, that helps immensely... I look forward to hearing about the windows macros.

Thanks again for your help!

Fernando Garcia's picture
Offline
Last seen: 2 months 4 weeks ago
Joined: 05/18/2011
Posts: 200

Hi Gorlak, 

I had some time last week to look into the Windows build. For all the modules you will have to define the following macros:

    -DRTI_THREADS
    -DRTI_WIN32
    -DPtrIntType=long
    -DCSREAL_IS_FLOAT
    -DRTI_ENDIAN_LITTLE
    -DRTI_MULTICAST
    -DRTI_SHARED_MEMORY
    -DRTI_IPV6
    -DWIN32
    -D_WINDOWS
    -D_WIN32_WINNT=0x0501
    -DWIN32_LEAN_AND_MEAN
    -D_CRT_SECURE_NO_DEPRECATE
    -DXML_STATIC
    -DXML_DTD
    -DHAVE_MEMMOVE
    -DCOMPILED_FROM_DSP

I think that should be enough for building static libraries. If you want to build DLLs though, you will have to play with the dllexport and dllimport. Every module uses their own macros to call dllexport or dllimport. Depending on the use you want to make (if you want to import or export symbols) you will need to declare -DRTI_<module_name>_DLL_EXPORT-DRTI_<module_name>_DLL_VARIABLE or both. You can see what the definition of these variables implies in the <module>_dll.h header file of each module, for instance log.1.0\include\share\log\log_dll.h.

Please let me know if this works for you and if you were able to make progress on the Linux build.

Best,
Fernando.

gorlak's picture
Offline
Last seen: 9 years 8 months ago
Joined: 06/04/2013
Posts: 8

I got it working!  Thanks so much for the help :)

Fernando Garcia's picture
Offline
Last seen: 2 months 4 weeks ago
Joined: 05/18/2011
Posts: 200

Hello Gorlak, 

I am glad you got it working :-). Can you share your Lua scripts with the Community?

Thanks,
Fernando.

gorlak's picture
Offline
Last seen: 9 years 8 months ago
Joined: 06/04/2013
Posts: 8

Yeah, I will upload it to github and link to it here sometime this week.

gorlak's picture
Offline
Last seen: 9 years 8 months ago
Joined: 06/04/2013
Posts: 8

Here is the script: https://github.com/gorlak/premake-ndds

Offline
Last seen: 11 years 4 weeks ago
Joined: 09/12/2013
Posts: 5

I read this thread with excitement, because I'd like to build the libraries myself. Unfortunately, I can't get the premake script to work for me, and I'm not sure if the problem is with me or it. :)

Here's the command I'm running:

$ premake gmake --file premake-ndds.lua

And this is the output I'm getting:

** premake-ndds.lua: premake-ndds.lua:86: attempt to call global 'project' (a table value)
** Script failed to run, ending.

Any ideas on what the problem might be? Line 86 begins the block for ndds-advlog, and contains:

project "ndds-advlog"
uuid "81F2C36E-498F-4CFF-BED5-9BDCE811D735"
language "C"
kind "StaticLib"

for i, config in ipairs( configurations() ) do
configuration( { config } )
targetdir( "../../" .. config .. "/plugins" )
end
configuration{}

DoNddsInternalSettings()

includedirs
{
"advlog.1.0/include/share",

"advlog.1.0/srcC/contextStack/h",
"advlog.1.0/srcC/log/h",
"advlog.1.0/srcC/logger/h",

"advlog.1.0/srcC/contextStack/peer",
"advlog.1.0/srcC/log/peer",
"advlog.1.0/srcC/logger/peer",

"log.1.0/include/share",
"clock.1.0/include/share",
"osapi.1.0/include/share",
"reda.1.0/include/share",
}

files
{
"advlog.1.0/include/**.h",
"advlog.1.0/srcC/**.h",
"advlog.1.0/srcC/**.c",
}

excludes
{
"advlog.1.0/srcC/log/Log_silent.msg.c",
}

Offline
Last seen: 11 years 4 weeks ago
Joined: 09/13/2013
Posts: 8

I am also receiving an error, but mine just says 'no active solution', also on line 86.  I'm sure its because I don't yet understand how to use premake.  The command I am running (on windows) is premake4 --file=premake-ndds.lua.  Any help would be appreciated. Thanks!

gorlak's picture
Offline
Last seen: 9 years 8 months ago
Joined: 06/04/2013
Posts: 8

I updated the readme.  Give it a glance and see if it clears up your questions.  Otherwise I would recommend running through the premake tutorial, and taking a glance at lua if you haven't already.  Cheers,

Offline
Last seen: 11 years 4 weeks ago
Joined: 09/13/2013
Posts: 8

Thank you so much.  I haven't had a chance to try it out yet, but it is already much more clear to me.

Offline
Last seen: 11 years 4 weeks ago
Joined: 09/12/2013
Posts: 5

Awesome, I got it to build the .a files for me. Thank you!

Offline
Last seen: 11 years 4 weeks ago
Joined: 09/13/2013
Posts: 8

Fred, do you mind sharing your premake4.lua script?

Offline
Last seen: 11 years 4 weeks ago
Joined: 09/12/2013
Posts: 5

Nope, not at all (sorry for the delay in response!). Below is what I have, in the 'rti' directory where I unzipped the source (which located itself into ndds500-src during the unzip). Hope this helps!

 

-- declare my solution name
solution "MySolution"
configurations{ "Release" }

-- create all the ndds projects into this solution
dofile( "ndds500-src/premake-ndds.lua" )

Offline
Last seen: 11 years 4 weeks ago
Joined: 09/12/2013
Posts: 5

Forgot to add: the .a files will be located at ../Release/plugins after the build, assuming you're sitting in the directory where your premake4.lua script is when you start. Also note that the premake-ndds.lua file should be in the directory where the RTI folders are (ndds500-src if you left it where the unzip put it).

I haven't tried to build anything with the .a files yet so I don't know if they actually work, but they built. :)

Offline
Last seen: 11 years 4 weeks ago
Joined: 09/12/2013
Posts: 5

Update: I was having trouble getting the order of the .a files right, so I decided to build .so files instead. Here's what I did on my Ubuntu 12.04 system:

1. cd obj/Release (this is under the directory where the source resides)

2.  for x in `ls`; do cd $x; gcc -shared -o /path/to/wherever/lib$x.so *.o; cd ..; done

3. grabbed a copy of RTI's HelloPublisher.cpp and HelloSubscriber.cpp from their examples (hello_simple).

4. Built the publisher (from a directory I called 'test' at the same level as the source) :

g++ -I../ndds500-src/include -I../ndds500-src/include/ndds -DRTI_UNIX -DRTI_LINUX -m32 -o HelloPublisher HelloPublisher.cpp -L/path/to/wherever -lndds-dds-c -lndds-dds-cpp -lndds-pres -lndds-cdr -lndds-commend -lndds-event -lndds-log -lndds-reda -lndds-disc -lndds-netio -lndds-mig -lndds-osapi -lndds-xml -lndds-writer-history -lndds-core-version -lndds-advlog -lndds-clock -lndds-transport -lndds-dl-driver -lndds-netio -ldl -lpthread -lrt

5. Built the subscriber (from that same directory):

g++ -I../ndds500-src/include -I../ndds500-src/include/ndds -DRTI_UNIX -DRTI_LINUX -m32 -o HelloSubscriber HelloSubscriber.cpp -L/path/to/wherever -lndds-dds-c -lndds-dds-cpp -lndds-pres -lndds-cdr -lndds-commend -lndds-event -lndds-log -lndds-reda -lndds-disc -lndds-netio -lndds-mig -lndds-osapi -lndds-xml -lndds-writer-history -lndds-core-version -lndds-advlog -lndds-clock -lndds-transport -lndds-dl-driver -lndds-netio -ldl -lpthread -lrt

 

I ran the two in separate terminals and successfully pubbed/subbed messages.

Hopefully this will help someone down the line. It's not very clean, but it works and should provide a jump-off point. I'm contemplating taking the original makefiles generated by premake and making a single system where all you have to do at the top level is type 'make', 'make install', 'make clean', etc.

Offline
Last seen: 11 years 4 weeks ago
Joined: 09/13/2013
Posts: 8

Thanks, Fred.  This is really helpful.  I was also able to build the .a files, but haven't yet tried to build a project using them. I'll definitely be looking at your instructions as a guide.

Ultimately, I'm actually trying to build for an embedded RTOS that doesn't seem to be supported (uc/OS-II), so I may have to make some code changes before I'm through.

gorlak's picture
Offline
Last seen: 9 years 8 months ago
Joined: 06/04/2013
Posts: 8

Hi folks, two things:

* I updated the script on github to remove the targetdir directives that were outputting things to ../../<build>/plugins, that was accidental.  You can set targetdir after you solution declaration, but before you dofile() to set where the libs should be output.

* There is a function called DoNddsSettings() in the lua file that dictates the proper order to link the libs in.  This function is meant to be called from client projects in a similar way to how DoNddsInternalSettings() is called when generating the ndds projects.

Cheers,

Offline
Last seen: 10 years 10 months ago
Joined: 11/06/2013
Posts: 4

Hello,

I'm trying to build DDS from source code using provided premake scrip (thanks a lot for this!), but it looks like the compilation dies while compiling ndds-dl-driver. It looks like I'm missing some ODBC header files:

==== Building ndds-dl-driver (release) ====
OdbcSetup.c
In file included from dl_driver.1.0/srcC/odbcSetup/OdbcSetup.c:83:
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:19:17: warning: sql.h: No such file or directory
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:20:22: warning: sqltypes.h: No such file or directory
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:21:20: warning: sqlext.h: No such file or directory
In file included from dl_driver.1.0/srcC/odbcSetup/OdbcSetup.c:83:
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:95: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:96: error: expected ‘)’ before ‘EnvironmentHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:100: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:101: error: expected ‘)’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:104: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:105: error: expected ‘)’ before ‘ConnectionHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:109: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:110: error: expected ‘)’ before ‘StatementHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:118: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:119: error: expected ‘)’ before ‘StatementHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:131: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:132: error: expected ‘)’ before ‘ConnectionHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:141: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:142: error: expected ‘)’ before ‘ConnectionHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:145: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:146: error: expected ‘)’ before ‘ConnectionHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:156: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:157: error: expected ‘)’ before ‘StatementHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:162: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:163: error: expected ‘)’ before ‘StatementHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:166: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:167: error: expected ‘)’ before ‘EnvironmentHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:177: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:178: error: expected ‘)’ before ‘StatementHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:181: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:182: error: expected ‘)’ before ‘ConnectionHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:185: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:186: error: expected ‘)’ before ‘EnvironmentHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:189: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:190: error: expected ‘)’ before ‘StatementHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:194: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:195: error: expected ‘)’ before ‘ConnectionHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:202: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:203: error: expected ‘)’ before ‘StatementHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:208: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:209: error: expected ‘)’ before ‘StatementHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:213: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:214: error: expected ‘)’ before ‘ConnectionHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:219: error: expected declaration specifiers or ‘...’ before ‘*’ token
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:220: error: expected ‘)’ before ‘EnvironmentHandle’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:230: error: expected specifier-qualifier-list before ‘SQLAllocConnectFcn’
dl_driver.1.0/include/share/dl_driver/dl_driver_odbc.h:295: error: expected declaration specifiers or ‘...’ before ‘SQLHDBC’
make[1]: *** [obj/Release/ndds-dl-driver/OdbcSetup.o] Error 1
make: *** [ndds-dl-driver] Error 2


This is on RHEL6 system. My question is, what's the compilation prerequisites on this OS? What shall I install in order to proceed with compilation?

Thanks!
Karel

 

Offline
Last seen: 10 years 10 months ago
Joined: 11/06/2013
Posts: 4

Just for the record. This issue is solvable by installing unixODBC package:

# yum install unixODBC-devel

Sorry for the noise...

Karel

Offline
Last seen: 10 years 10 months ago
Joined: 11/06/2013
Posts: 4

I hope I may a little bit extend this thread and ask here what is the proper way of building Java/DDS from the NDDS 5.0.0 sources. Honestly speaking when I try naive approach of

javac `find dds_java.1.0/ -name '*.java'` -d classes/

I get a lot of errors. It looks like the first culprit is DynamicData type which is used in DynamicDataHelper class. It looks like DynamicData type is defined nowhere in Java and more precisely it looks like the type is defined just in plain C. The problem is that all JNI tutorials/documentations are completely silent about  a possibility to define java type in pure C so I'm completely out of idea how to build DynamicDataHelper class in such case. Also it looks like none of the Java code is using JNI prefered way of loading the library: System.loadLibrary -- so again, how to get that working once the thing is compilable?

Any idea how to proceed is highly appreciated here as I'm quite confused about the current Java/DDS code...
Thanks!
Karel

Fernando Garcia's picture
Offline
Last seen: 2 months 4 weeks ago
Joined: 05/18/2011
Posts: 200

Hi Karel,

To build the Java module you will need to build two separate libraries:

  1. A shared libary, using the C source code included in dds_java.1.0. You will need to add this library to the library path when running your DDS-based Java application.
  2. A Jar file the .java source files under dds_java.1.0/interface and dds_java.1.0/srcJava. You will to use this Jar file to build your DDS-based Java application.

This is the way I build the Jar File:

# First, compile Java files
/usr/bin/javac -classpath :/Users/fgarcia/rti/buildable_src/ndds_src-5.0.0/dds_java.1.0:/Users/fgarcia/rti/buildable_src/ndds_src-5.0.0/dds_java.1.0/temp -d /Users/fgarcia/rti/buildable_src/ndds_src-5.0.0/dds_java.1.0/temp @/Users/fgarcia/rti/buildable_src/ndds_src-5.0.0/dds_java.1.0/temp/java_sources_filelist
# Second, make the Jar file
/usr/bin/jar -cf /Users/fgarcia/rti/buildable_src/ndds_src-5.0.0/dds_java.1.0/nddsjava_jar.jar @/Users/fgarcia/rti/buildable_src/ndds_src-5.0.0/dds_java.1.0/java_class_filelist  

Where:

  • /Users/fgarcia/rti/buildable_src/ndds_src-5.0.0/dds_java.1.0/temp/java_sources is a file that contains all the Java files I compile into the Jar. (Note as I said earlier that these are all the .java files include under interface and srcJava. If you are not building debug, you should not include dds_java.1.0/srcJava/com/rti/dds/util/DebugToken.java.)
  • And /Users/fgarcia/rti/buildable_src/ndds_src-5.0.0/dds_java.1.0/java_class_filelist is the list of class files.

Please, let me know if this works for you.

Fernando.

Offline
Last seen: 10 years 10 months ago
Joined: 11/06/2013
Posts: 4

Hi Fernando,

thanks a lot for fast help. I'm able to do (1) by modifying premake script provided here. I'm not able to do (2) since in my copy of DDS sources there is no dds_java.1.0/interface directory. I've verified the directory is missing in both RTI_Connext_DDS-5.0.0-src.zip and RTI_Connext_DDS-5.0.0-win-src.zip files -- are those interfaces automatically generated by your build process? Perhaps RTI forgot to include them in distributed source zip fle? Or am I missing another piece of important information about how to proceed in case interface directory is missing?

Thanks a lot!
Karel

Fernando Garcia's picture
Offline
Last seen: 2 months 4 weeks ago
Joined: 05/18/2011
Posts: 200

Hi Karel,

What you found is a bug in the readable sources provided by RTI. The interface directory java sources should have been included in the dds_java.1.0 module. This bug will be fix in the upcoming release of RTI Connext DDS, you should be able to build both the shared libraries and the JAR library with the new sources. There probably be things that we will need to change in the premake scripts for the modules, but I will try to help you guys fill the gaps.

Thanks,
Fernando.

Gerardo Pardo's picture
Offline
Last seen: 4 months 1 week ago
Joined: 06/02/2010
Posts: 602

Hello,

It seems like you are trying to link object files that were compiled for 32-bits with others compiled for 64-bits.

The objects/libraries in the directory named i86Linux3.xgcc4.6.3 are all compiled for 32 bits (anything with prefix "i86" is for 32 bit Intel architecture) the equivalent for 64 bit intel would have the prefix "x64".

Gerardo

Offline
Last seen: 7 years 10 months ago
Joined: 05/26/2016
Posts: 1

on windows x64, compile the open commutiy ndds lib use the following premake.lua and sample hello_simple  successfully. but the hello_subscriber do not recieve any message from hello_publisher.

pls help  

File Attachments: 
Offline
Last seen: 3 years 9 months ago
Joined: 10/08/2018
Posts: 12

Hi everyone,

I'm trying to get rti_connext_dds-5.2.0-core-src compiled. With the help of the premake lua scripts in the forum I managed to compile everything except dds_cp.2.0. As I want to use the moder C++ API, I would like to get it compiled as well. I copied and modified the settings of dds_cpp.1 for dds_cpp.2 (See premake config in attachment). Did anyone manage to get dds_cpp.2.0 compiled? I posted the output (containing the compile errors) in the bottom.

 

Kind regards,

Andreas

 

make ndds-dds-cpp2
==== Building ndds-dds-cpp2 (release) ====
FactoryPluginSupport.cxx
In file included from dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp:36,
from dds_cpp.2.0/hpp/rtiboost/shared_ptr.hpp:17,
from dds_cpp.2.0/hpp/dds/core/detail/ref_traits.hpp:26,
from dds_cpp.2.0/hpp/dds/core/ref_traits.hpp:73,
from dds_cpp.2.0/hpp/dds/core/refmacros.hpp:26,
from dds_cpp.2.0/hpp/dds/core/Reference.hpp:27,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:28,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
dds_cpp.2.0/hpp/rtiboost/smart_ptr/detail/shared_count.hpp:323:33: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
explicit shared_count( std::auto_ptr<Y> & r ): pi_( new sp_counted_impl_p<Y>( r.get() ) )
^~~~~~~~
In file included from /usr/include/c++/8.2.1/memory:80,
from dds_cpp.2.0/hpp/rtiboost/config/no_tr1/memory.hpp:21,
from dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp:31,
from dds_cpp.2.0/hpp/rtiboost/shared_ptr.hpp:17,
from dds_cpp.2.0/hpp/dds/core/detail/ref_traits.hpp:26,
from dds_cpp.2.0/hpp/dds/core/ref_traits.hpp:73,
from dds_cpp.2.0/hpp/dds/core/refmacros.hpp:26,
from dds_cpp.2.0/hpp/dds/core/Reference.hpp:27,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:28,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
/usr/include/c++/8.2.1/bits/unique_ptr.h:53:28: note: declared here
template<typename> class auto_ptr;
^~~~~~~~
In file included from dds_cpp.2.0/hpp/rtiboost/shared_ptr.hpp:17,
from dds_cpp.2.0/hpp/dds/core/detail/ref_traits.hpp:26,
from dds_cpp.2.0/hpp/dds/core/ref_traits.hpp:73,
from dds_cpp.2.0/hpp/dds/core/refmacros.hpp:26,
from dds_cpp.2.0/hpp/dds/core/Reference.hpp:27,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:28,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp:251:65: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
template< class T, class R > struct sp_enable_if_auto_ptr< std::auto_ptr< T >, R >
^~~~~~~~
In file included from /usr/include/c++/8.2.1/memory:80,
from dds_cpp.2.0/hpp/rtiboost/config/no_tr1/memory.hpp:21,
from dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp:31,
from dds_cpp.2.0/hpp/rtiboost/shared_ptr.hpp:17,
from dds_cpp.2.0/hpp/dds/core/detail/ref_traits.hpp:26,
from dds_cpp.2.0/hpp/dds/core/ref_traits.hpp:73,
from dds_cpp.2.0/hpp/dds/core/refmacros.hpp:26,
from dds_cpp.2.0/hpp/dds/core/Reference.hpp:27,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:28,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
/usr/include/c++/8.2.1/bits/unique_ptr.h:53:28: note: declared here
template<typename> class auto_ptr;
^~~~~~~~
In file included from dds_cpp.2.0/hpp/rtiboost/shared_ptr.hpp:17,
from dds_cpp.2.0/hpp/dds/core/detail/ref_traits.hpp:26,
from dds_cpp.2.0/hpp/dds/core/ref_traits.hpp:73,
from dds_cpp.2.0/hpp/dds/core/refmacros.hpp:26,
from dds_cpp.2.0/hpp/dds/core/Reference.hpp:27,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:28,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp:450:31: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
explicit shared_ptr( std::auto_ptr<Y> & r ): px(r.get()), pn()
^~~~~~~~
In file included from /usr/include/c++/8.2.1/memory:80,
from dds_cpp.2.0/hpp/rtiboost/config/no_tr1/memory.hpp:21,
from dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp:31,
from dds_cpp.2.0/hpp/rtiboost/shared_ptr.hpp:17,
from dds_cpp.2.0/hpp/dds/core/detail/ref_traits.hpp:26,
from dds_cpp.2.0/hpp/dds/core/ref_traits.hpp:73,
from dds_cpp.2.0/hpp/dds/core/refmacros.hpp:26,
from dds_cpp.2.0/hpp/dds/core/Reference.hpp:27,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:28,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
/usr/include/c++/8.2.1/bits/unique_ptr.h:53:28: note: declared here
template<typename> class auto_ptr;
^~~~~~~~
In file included from dds_cpp.2.0/hpp/rtiboost/shared_ptr.hpp:17,
from dds_cpp.2.0/hpp/dds/core/detail/ref_traits.hpp:26,
from dds_cpp.2.0/hpp/dds/core/ref_traits.hpp:73,
from dds_cpp.2.0/hpp/dds/core/refmacros.hpp:26,
from dds_cpp.2.0/hpp/dds/core/Reference.hpp:27,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:28,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp:463:22: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
shared_ptr( std::auto_ptr<Y> && r ): px(r.get()), pn()
^~~~~~~~
In file included from /usr/include/c++/8.2.1/memory:80,
from dds_cpp.2.0/hpp/rtiboost/config/no_tr1/memory.hpp:21,
from dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp:31,
from dds_cpp.2.0/hpp/rtiboost/shared_ptr.hpp:17,
from dds_cpp.2.0/hpp/dds/core/detail/ref_traits.hpp:26,
from dds_cpp.2.0/hpp/dds/core/ref_traits.hpp:73,
from dds_cpp.2.0/hpp/dds/core/refmacros.hpp:26,
from dds_cpp.2.0/hpp/dds/core/Reference.hpp:27,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:28,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
/usr/include/c++/8.2.1/bits/unique_ptr.h:53:28: note: declared here
template<typename> class auto_ptr;
^~~~~~~~
In file included from dds_cpp.2.0/hpp/rtiboost/shared_ptr.hpp:17,
from dds_cpp.2.0/hpp/dds/core/detail/ref_traits.hpp:26,
from dds_cpp.2.0/hpp/dds/core/ref_traits.hpp:73,
from dds_cpp.2.0/hpp/dds/core/refmacros.hpp:26,
from dds_cpp.2.0/hpp/dds/core/Reference.hpp:27,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:28,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp:529:34: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
shared_ptr & operator=( std::auto_ptr<Y> & r )
^~~~~~~~
In file included from /usr/include/c++/8.2.1/memory:80,
from dds_cpp.2.0/hpp/rtiboost/config/no_tr1/memory.hpp:21,
from dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp:31,
from dds_cpp.2.0/hpp/rtiboost/shared_ptr.hpp:17,
from dds_cpp.2.0/hpp/dds/core/detail/ref_traits.hpp:26,
from dds_cpp.2.0/hpp/dds/core/ref_traits.hpp:73,
from dds_cpp.2.0/hpp/dds/core/refmacros.hpp:26,
from dds_cpp.2.0/hpp/dds/core/Reference.hpp:27,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:28,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
/usr/include/c++/8.2.1/bits/unique_ptr.h:53:28: note: declared here
template<typename> class auto_ptr;
^~~~~~~~
In file included from dds_cpp.2.0/hpp/rtiboost/shared_ptr.hpp:17,
from dds_cpp.2.0/hpp/dds/core/detail/ref_traits.hpp:26,
from dds_cpp.2.0/hpp/dds/core/ref_traits.hpp:73,
from dds_cpp.2.0/hpp/dds/core/refmacros.hpp:26,
from dds_cpp.2.0/hpp/dds/core/Reference.hpp:27,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:28,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp:538:34: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
shared_ptr & operator=( std::auto_ptr<Y> && r )
^~~~~~~~
In file included from /usr/include/c++/8.2.1/memory:80,
from dds_cpp.2.0/hpp/rtiboost/config/no_tr1/memory.hpp:21,
from dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp:31,
from dds_cpp.2.0/hpp/rtiboost/shared_ptr.hpp:17,
from dds_cpp.2.0/hpp/dds/core/detail/ref_traits.hpp:26,
from dds_cpp.2.0/hpp/dds/core/ref_traits.hpp:73,
from dds_cpp.2.0/hpp/dds/core/refmacros.hpp:26,
from dds_cpp.2.0/hpp/dds/core/Reference.hpp:27,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:28,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
/usr/include/c++/8.2.1/bits/unique_ptr.h:53:28: note: declared here
template<typename> class auto_ptr;
^~~~~~~~
In file included from dds_cpp.2.0/hpp/rtiboost/shared_ptr.hpp:17,
from dds_cpp.2.0/hpp/dds/core/detail/ref_traits.hpp:26,
from dds_cpp.2.0/hpp/dds/core/ref_traits.hpp:73,
from dds_cpp.2.0/hpp/dds/core/refmacros.hpp:26,
from dds_cpp.2.0/hpp/dds/core/Reference.hpp:27,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:28,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp: In member function ‘rtiboost::shared_ptr<T>& rtiboost::shared_ptr<T>::operator=(std::auto_ptr<_Up>&&)’:
dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp:540:38: warning: ‘template<class> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
this_type( static_cast< std::auto_ptr<Y> && >( r ) ).swap( *this );
^~~~~~~~
In file included from /usr/include/c++/8.2.1/memory:80,
from dds_cpp.2.0/hpp/rtiboost/config/no_tr1/memory.hpp:21,
from dds_cpp.2.0/hpp/rtiboost/smart_ptr/shared_ptr.hpp:31,
from dds_cpp.2.0/hpp/rtiboost/shared_ptr.hpp:17,
from dds_cpp.2.0/hpp/dds/core/detail/ref_traits.hpp:26,
from dds_cpp.2.0/hpp/dds/core/ref_traits.hpp:73,
from dds_cpp.2.0/hpp/dds/core/refmacros.hpp:26,
from dds_cpp.2.0/hpp/dds/core/Reference.hpp:27,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:28,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
/usr/include/c++/8.2.1/bits/unique_ptr.h:53:28: note: declared here
template<typename> class auto_ptr;
^~~~~~~~
In file included from dds_cpp.2.0/hpp/rti/core/policy/CorePolicy.hpp:45,
from dds_cpp.2.0/hpp/dds/core/policy/detail/CorePolicy.hpp:26,
from dds_cpp.2.0/hpp/dds/core/policy/CorePolicy.hpp:27,
from dds_cpp.2.0/hpp/rti/domain/qos/DomainParticipantQosImpl.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/qos/detail/DomainParticipantQos.hpp:27,
from dds_cpp.2.0/hpp/dds/domain/qos/DomainParticipantQos.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:32,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
dds_cpp.2.0/hpp/rti/core/policy/CorePolicyAdapter.hpp: In static member function ‘static void rti::core::policy::ProfileAdapter::initialize(rti::core::SimpleTypeAdapter<DDS_ProfileQosPolicy>::native_type&)’:
dds_c.1.0/include/share/dds_c/dds_c_infrastructure.h:5149:1: error: could not convert ‘{1, 0, 0, 0, 0, 29508, 0, 0, {1, 0, 1}, {1, 1}}’ from ‘<brace-enclosed initializer list>’ to ‘DDS_StringSeq’
}
^
dds_cpp.2.0/hpp/rti/core/policy/CorePolicyAdapter.hpp:77:44: note: in definition of macro ‘RTI_POLICY_DEFINE_SIMPLE_ADAPTER’
static const native_type DEFAULT = DEFAULT_CONSTANT; \
^~~~~~~~~~~~~~~~
dds_cpp.2.0/hpp/rti/core/policy/CorePolicyAdapter.hpp:163:43: note: in expansion of macro ‘DDS_PROFILE_QOS_POLICY_DEFAULT’
RTI_POLICY_DEFINE_SIMPLE_ADAPTER(Profile, DDS_PROFILE_QOS_POLICY_DEFAULT)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dds_c.1.0/include/share/dds_c/dds_c_infrastructure.h:5149:1: error: could not convert ‘{1, 0, 0, 0, 0, 29508, 0, 0, {1, 0, 1}, {1, 1}}’ from ‘<brace-enclosed initializer list>’ to ‘DDS_StringSeq’
}
^
dds_cpp.2.0/hpp/rti/core/policy/CorePolicyAdapter.hpp:77:44: note: in definition of macro ‘RTI_POLICY_DEFINE_SIMPLE_ADAPTER’
static const native_type DEFAULT = DEFAULT_CONSTANT; \
^~~~~~~~~~~~~~~~
dds_cpp.2.0/hpp/rti/core/policy/CorePolicyAdapter.hpp:163:43: note: in expansion of macro ‘DDS_PROFILE_QOS_POLICY_DEFAULT’
RTI_POLICY_DEFINE_SIMPLE_ADAPTER(Profile, DDS_PROFILE_QOS_POLICY_DEFAULT)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dds_c.1.0/include/share/dds_c/dds_c_infrastructure.h:5149:1: error: could not convert ‘{1, 0, 0, 0, 0, 29508, 0, 0, {1, 0, 1}, {1, 1}}’ from ‘<brace-enclosed initializer list>’ to ‘DDS_StringSeq’
}
^
dds_cpp.2.0/hpp/rti/core/policy/CorePolicyAdapter.hpp:77:44: note: in definition of macro ‘RTI_POLICY_DEFINE_SIMPLE_ADAPTER’
static const native_type DEFAULT = DEFAULT_CONSTANT; \
^~~~~~~~~~~~~~~~
dds_cpp.2.0/hpp/rti/core/policy/CorePolicyAdapter.hpp:163:43: note: in expansion of macro ‘DDS_PROFILE_QOS_POLICY_DEFAULT’
RTI_POLICY_DEFINE_SIMPLE_ADAPTER(Profile, DDS_PROFILE_QOS_POLICY_DEFAULT)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dds_cpp.2.0/hpp/rti/core/policy/CorePolicyAdapter.hpp: In static member function ‘static void rti::core::policy::LoggingAdapter::initialize(rti::core::SimpleTypeAdapter<DDS_LoggingQosPolicy>::native_type&)’:
dds_c.1.0/include/share/ndds/ndds_config_c.h:296:1: error: could not convert ‘{NDDS_CONFIG_LOG_VERBOSITY_ERROR, NDDS_CONFIG_LOG_CATEGORY_ALL, NDDS_CONFIG_LOG_PRINT_FORMAT_DEFAULT, 0}’ from ‘<brace-enclosed initializer list>’ to ‘const native_type’ {aka ‘const DDS_LoggingQosPolicy’}
}
^
dds_cpp.2.0/hpp/rti/core/policy/CorePolicyAdapter.hpp:77:44: note: in definition of macro ‘RTI_POLICY_DEFINE_SIMPLE_ADAPTER’
static const native_type DEFAULT = DEFAULT_CONSTANT; \
^~~~~~~~~~~~~~~~
dds_cpp.2.0/hpp/rti/core/policy/CorePolicyAdapter.hpp:164:43: note: in expansion of macro ‘DDS_LOGGING_QOS_POLICY_DEFAULT’
RTI_POLICY_DEFINE_SIMPLE_ADAPTER(Logging, DDS_LOGGING_QOS_POLICY_DEFAULT)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from dds_c.1.0/include/share/ndds/ndds_c.h:51,
from dds_cpp.2.0/hpp/rti/core/detail/NativeSequence.hpp:27,
from dds_cpp.2.0/hpp/rti/core/InstanceHandle.hpp:22,
from dds_cpp.2.0/hpp/dds/core/detail/InstanceHandle.hpp:27,
from dds_cpp.2.0/hpp/dds/core/InstanceHandle.hpp:23,
from dds_cpp.2.0/hpp/dds/core/status/TStatus.hpp:27,
from dds_cpp.2.0/hpp/dds/core/status/detail/Status.hpp:26,
from dds_cpp.2.0/hpp/dds/core/status/Status.hpp:26,
from dds_cpp.2.0/hpp/dds/core/TEntity.hpp:29,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:31,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
dds_cpp.2.0/hpp/rti/core/ProxyTypeSupport.hpp: In constructor ‘rti::core::DynamicDataProxyTypeSupportImpl::DynamicDataProxyTypeSupportImpl(const DDS_TypeCode*, const DDS_DynamicDataTypeProperty_t&)’:
dds_c.1.0/include/share/dds_c/dds_c_dynamicdata.h:2062:60: error: could not convert ‘{0, -1, 1024, 1}’ from ‘<brace-enclosed initializer list>’ to ‘DDS_DynamicDataProperty_t’
DDS_DynamicDataTypeSerializationProperty_t_INITIALIZER }
^
dds_cpp.2.0/hpp/rti/core/ProxyTypeSupport.hpp:161:13: note: in expansion of macro ‘DDS_DynamicDataTypeProperty_t_INITIALIZER’
DDS_DynamicDataTypeProperty_t_INITIALIZER;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dds_c.1.0/include/share/dds_c/dds_c_dynamicdata.h:2062:60: error: could not convert ‘{0, 4294967295, 4294967295, 0, 0}’ from ‘<brace-enclosed initializer list>’ to ‘DDS_DynamicDataTypeSerializationProperty_t’
DDS_DynamicDataTypeSerializationProperty_t_INITIALIZER }
^
dds_cpp.2.0/hpp/rti/core/ProxyTypeSupport.hpp:161:13: note: in expansion of macro ‘DDS_DynamicDataTypeProperty_t_INITIALIZER’
DDS_DynamicDataTypeProperty_t_INITIALIZER;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from dds_cpp.2.0/hpp/dds/core/detail/Vector.hpp:26,
from dds_cpp.2.0/hpp/dds/core/vector.hpp:30,
from dds_cpp.2.0/hpp/rti/core/AllocationSettings.hpp:23,
from dds_cpp.2.0/hpp/rti/core/policy/CorePolicy.hpp:36,
from dds_cpp.2.0/hpp/dds/core/policy/detail/CorePolicy.hpp:26,
from dds_cpp.2.0/hpp/dds/core/policy/CorePolicy.hpp:27,
from dds_cpp.2.0/hpp/rti/domain/qos/DomainParticipantQosImpl.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/qos/detail/DomainParticipantQos.hpp:27,
from dds_cpp.2.0/hpp/dds/domain/qos/DomainParticipantQos.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/TDomainParticipant.hpp:32,
from dds_cpp.2.0/hpp/dds/domain/detail/DomainParticipant.hpp:26,
from dds_cpp.2.0/hpp/dds/domain/DomainParticipant.hpp:26,
from dds_cpp.2.0/srcCxx/domain/FactoryPluginSupport.cxx:18:
dds_cpp.2.0/hpp/rti/core/Vector.hpp: In instantiation of ‘void rti::core::NativeSequenceWrapper<T>::set_default() [with T = rti::core::Locator]’:
dds_cpp.2.0/hpp/rti/core/Vector.hpp:56:9: required from ‘rti::core::NativeSequenceWrapper<T>::NativeSequenceWrapper() [with T = rti::core::Locator]’
dds_cpp.2.0/hpp/rti/core/Vector.hpp:146:5: required from ‘rti::core::SequenceBase<T>::SequenceBase(rti::core::SequenceBase<T>::size_type) [with T = rti::core::Locator; rti::core::SequenceBase<T>::size_type = long unsigned int]’
dds_cpp.2.0/hpp/rti/core/Vector.hpp:527:65: required from ‘rti::core::vector<T>::vector(const rti::core::vector<T>&, rti::core::vector<T>::size_type) [with T = rti::core::Locator; rti::core::vector<T>::size_type = long unsigned int]’
dds_cpp.2.0/hpp/rti/core/Vector.hpp:356:24: required from ‘void rti::core::vector<T>::resize(rti::core::vector<T>::size_type, const T&) [with T = rti::core::Locator; rti::core::vector<T>::size_type = long unsigned int]’
dds_cpp.2.0/hpp/rti/core/detail/NativeConversion.hpp:105:5: required from ‘void rti::core::native_conversions::to_native(const TSeq&, NativeSeq&, const T&) [with T = rti::core::Locator; TSeq = std::vector<rti::core::Locator>; NativeSeq = DDS_LocatorSeq]’
dds_cpp.2.0/hpp/rti/core/LocatorFilter.hpp:131:38: required from here
dds_cpp.2.0/hpp/rti/core/Vector.hpp:62:32: error: could not convert ‘{1, 0, 0, 0, 0, 29508, 0, 0, {1, 0, 1}, {1, 1}}’ from ‘<brace-enclosed initializer list>’ to ‘const NativeSeq’ {aka ‘const DDS_OctetSeq’}
static const NativeSeq DEFAULT = DDS_SEQUENCE_INITIALIZER;
^~~~~~~
make[1]: *** [ndds-dds-cpp2.make:171: obj/Release/ndds-dds-cpp2/FactoryPluginSupport.o] Error 1
make: *** [Makefile:53: ndds-dds-cpp2] Error 2

File Attachments: 
Fernando Garcia's picture
Offline
Last seen: 2 months 4 weeks ago
Joined: 05/18/2011
Posts: 200

Hi Andreas,

Could you trying applying the following changes to your premake files?

  1. Remove "dds_cpp.1.0/include/share" from the list of include directories of ndds-dds-cpp2
  2. Remove "RTI_USE_CPP_API=1" from the list of defines

The dds_cpp.2.0 module does not depend on dds_cpp.1.0 and that may produce some conflicts.

Let me know once you've applied those changes what the build results are.

Thanks,
Fernando.

Offline
Last seen: 3 years 9 months ago
Joined: 10/08/2018
Posts: 12

Hi Fernando

Thanks for you suggestions. Unfortunately after applying them, I get the following error:

make ndds-dds-cpp2
==== Building ndds-dds-cpp2 (release) ====
util.cxx
In file included from dds_c.1.0/include/share/dds_c/dds_c_infrastructure.h:32,
from dds_c.1.0/include/share/ndds/ndds_utility_c.h:13,
from dds_cpp.2.0/srcCxx/util/util.cxx:15:
dds_c.1.0/include/share/dds_c/dds_c_sequence.h:86:12: fatal error: dds_cpp/dds_cpp_dll.h: No such file or directory
#include "dds_cpp/dds_cpp_dll.h"
^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [ndds-dds-cpp2.make:168: obj/Release/ndds-dds-cpp2/util.o] Error 1
make: *** [Makefile:53: ndds-dds-cpp2] Error 2

In the meantime I tryed to solve the errors on my own and got it compiled. I strongly asume that the change I made are not really good or might even brake things. As I couldn't try it out yet I don't know yet. I would like to share my changes with the community but I don't want to run into any licence violation. As the packed code (.tar.gz) takes 53 MB, I can't upload it here. I don't know a save way yet, how I can share the code with my changes with to community and not violating any licence. Could anyone help me with that?

I have another question: In the "original" library I have 9 ".so" files (libnddsc.so, libnddscore.so, libnddscpp2.so, libnddscpp.so, libnddsjava.so, libnddstransporttcp.so, librtidlcpp.so, librtidlc.so and librtimonitoring.so). With my current premake settings I only get one file libndds-dds-cpp2.a (To get the shared library is not a problem). Is this okay or how can I get the 9 library files?

 

Kind regards,

Andreas

Offline
Last seen: 3 years 9 months ago
Joined: 10/08/2018
Posts: 12

Hi Fernando

I got the C and traditional C++ library compiling and linking successfully with the premake script attached. When I try to use the modern C++ library, I get the following errors:

Checking directory objs
Checking directory objs/x64Linux3.xgcc7.3.0
g++ -m64 -static-libgcc -Wl,--no-as-needed -o objs/x64Linux3.xgcc7.3.0/HelloWorld_subscriber objs/x64Linux3.xgcc7.3.0/HelloWorld_subscriber.o objs/x64Linux3.xgcc7.3.0/HelloWorldImplPlugin.o objs/x64Linux3.xgcc7.3.0/HelloWorldImpl.o objs/x64Linux3.xgcc7.3.0/HelloWorld.o -L"/home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0"/lib/x64Linux3.xgcc7.3.0 -lndds-dds-cpp2 -lndds-dds-c -lndds-cdr -lndds-pres -lndds-log -lndds-osapi -ldl -lnsl -lm -lpthread -lrt
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_DataReaderSeq::DDS_DataReaderSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_PublisherSeq::DDS_PublisherSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_DataReaderSeq::~DDS_DataReaderSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_TopicSeq::DDS_TopicSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_StringSeq::operator=(DDS_StringSeq const&)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_FlowControllerSeq::DDS_FlowControllerSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_OctetSeq::DDS_OctetSeq(DDS_OctetSeq const&)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_StringSeq::~DDS_StringSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_TopicSeq::~DDS_TopicSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_EndpointGroupSeq::~DDS_EndpointGroupSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_PropertySeq::~DDS_PropertySeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_ChannelSettingsSeq::DDS_ChannelSettingsSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_TransportUnicastSettingsSeq::~DDS_TransportUnicastSettingsSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_TransportEncapsulationSettingsSeq::~DDS_TransportEncapsulationSettingsSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_SubscriberSeq::~DDS_SubscriberSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_ContentFilteredTopicSeq::~DDS_ContentFilteredTopicSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_ConditionSeq::DDS_ConditionSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_EndpointGroupSeq::DDS_EndpointGroupSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_LocatorFilterSeq::~DDS_LocatorFilterSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_QosPolicyCountSeq::~DDS_QosPolicyCountSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_LocatorSeq::DDS_LocatorSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_TransportMulticastSettingsSeq::~DDS_TransportMulticastSettingsSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_TransportUnicastSettingsSeq::DDS_TransportUnicastSettingsSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_TransportMulticastMappingSeq::~DDS_TransportMulticastMappingSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_DataWriterSeq::~DDS_DataWriterSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_QosPolicyCountSeq::DDS_QosPolicyCountSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_InstanceHandleSeq::~DDS_InstanceHandleSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_InstanceHandleSeq::DDS_InstanceHandleSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_EncapsulationIdSeq::DDS_EncapsulationIdSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_TransportMulticastMappingSeq::DDS_TransportMulticastMappingSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_LocatorSeq::~DDS_LocatorSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_LongSeq::DDS_LongSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_LocatorFilterSeq::DDS_LocatorFilterSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_OctetSeq::~DDS_OctetSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_ConditionSeq::~DDS_ConditionSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_PropertySeq::DDS_PropertySeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_TransportEncapsulationSettingsSeq::DDS_TransportEncapsulationSettingsSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_DataWriterSeq::DDS_DataWriterSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_LongSeq::~DDS_LongSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_DynamicData::DDS_DynamicData()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_EncapsulationIdSeq::~DDS_EncapsulationIdSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_OctetSeq::operator=(DDS_OctetSeq const&)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_FlowControllerSeq::~DDS_FlowControllerSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_DynamicData::~DDS_DynamicData()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_ContentFilteredTopicSeq::DDS_ContentFilteredTopicSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_ChannelSettingsSeq::~DDS_ChannelSettingsSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_SubscriberSeq::DDS_SubscriberSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_OctetSeq::DDS_OctetSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_PublisherSeq::~DDS_PublisherSeq()'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_TransportMulticastSettingsSeq::DDS_TransportMulticastSettingsSeq(int)'
/usr/bin/ld: /home/andreasziegler/tmp/rti_connext_dds-5.2.0/opt/rti_connext_dds-5.2.0/lib/x64Linux3.xgcc7.3.0/libndds-dds-cpp2.so: undefined reference to `DDS_StringSeq::DDS_StringSeq(int)'
collect2: error: ld returned 1 exit status
make: *** [makefile_HelloWorld_x64Linux3gcc7.3.0:58: objs/x64Linux3.xgcc7.3.0/HelloWorld_subscriber] Error 1

As far as I understand, all these data structures which can't be found while linking, are involved in some macros like e.g.:

./dds_c.1.0/include/share/dds_c/dds_c_infrastructure.h:85:DDS_SEQUENCE(DDS_StringSeq, char*);

./dds_c.1.0/include/share/dds_c/dds_c_infrastructure.h:2261:DDS_SEQUENCE(DDS_TransportMulticastSettingsSeq, struct DDS_TransportMulticastSettings_t);

./dds_c.1.0/include/share/dds_c/dds_c_subscription.h:1036:DDS_SEQUENCE(DDS_DataReaderSeq, DDS_DataReader_ptr);

Can you give me some hints, how I can tackle this errors?

Kind regards,

Andreas

 

File Attachments: 
sara's picture
Offline
Last seen: 1 year 10 months ago
Joined: 01/16/2013
Posts: 128

Hi Andreas,

As you probably know, we have different licenses (for research or commercial) that will avoid that you build your own libraries. I think you are already in contact with us, but if you want any help on learning which options are out there for you, please contact me: sara (at) rti (dot) com.

All the best,
Sara