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).
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.
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 :)
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:
If you want to compile for 64-bit Linux it seems you may also need:
For XML you will also need:
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.
Awesome, that helps immensely... I look forward to hearing about the windows macros.
Thanks again for your help!
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:
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
ordllimport
. 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.
I got it working! Thanks so much for the help :)
Hello Gorlak,
I am glad you got it working :-). Can you share your Lua scripts with the Community?
Thanks,
Fernando.
Yeah, I will upload it to github and link to it here sometime this week.
Here is the script: https://github.com/gorlak/premake-ndds
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",
}
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!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,
Thank you so much. I haven't had a chance to try it out yet, but it is already much more clear to me.
Awesome, I got it to build the .a files for me. Thank you!
Fred, do you mind sharing your premake4.lua script?
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" )
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. :)
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.
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.
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,
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:
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
Just for the record. This issue is solvable by installing unixODBC package:
Sorry for the noise...
Karel
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
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
Hi Karel,
To build the Java module you will need to build two separate libraries:
This is the way I build the Jar File:
Where:
Please, let me know if this works for you.
Fernando.
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
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.
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
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
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
Hi Andreas,
Could you trying applying the following changes to your premake files?
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.
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
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
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