【问题标题】:Compiling Code with CMAKE written with C++ and DDS使用 C++ 和 DDS 编写的 CMAKE 编译代码
【发布时间】:2019-08-13 10:07:23
【问题描述】:

我是使用 CMAKE 的新手,我正在编写一个 Cmakelists.txt 文件来编译我的项目。我收到以下错误:

/usr/bin/ld: /home/tarun/rti_connext_dds-6.0.0/lib/x64Linux3gcc5.4.0/libnddsc.so: undefined reference to symbol 'PRESTypePlugin_interpretedSerialize'

/home/tarun/rti_connext_dds-6.0.0/lib/x64Linux3gcc5.4.0/libnddscore.so: error adding symbols: DSO missing from command line

我已经尝试了其他可用的解决方案,例如添加 LFLAGS 和 CFLAGS,但我仍然遇到同样的错误。

这就是我在 cmakelists 中链接我的库的方式

target_link_libraries(test_IMU_DDS PUBLIC
${CONNEXTDDS_CPP2_API_LIBRARIES_RELEASE_SHARED}
${CONNEXTDDS_EXTERNAL_LIBS} 
${COMMANDTYPE_OBJS}
${PROJECT_SOURCE_DIR}/xspublic/xscommon
${PROJECT_SOURCE_DIR}/xspublic/xscontroller
${PROJECT_SOURCE_DIR}/xspublic/xstypes
${CMAKE_DL_LIBS}
)

有人能帮我解决这个问题吗?

【问题讨论】:

    标签: c++ cmake compiler-errors data-distribution-service


    【解决方案1】:

    在他们的社区 GitHub 个人资料中有一个关于如何构建 ConnextDDS 应用程序的示例:Build a ConnextDDS application with CMake

    该示例使用“resources/cmake”文件夹中的文件(调用 RTI 代码生成器和 FindPackage CMake 脚本)。 FindPackage 脚本也随 ConnextDDS 安装 (6.0.0) 提供,但来自社区的脚本更新更多。 FindPackage 脚本将为您提供在项目中集成 ConnextDDS 所需的所有定义、标志和库。

    【讨论】:

      【解决方案2】:

      我将此nddscdnddscorednddscpp2 添加到 target_link_libraries 并将这些标志添加到 CMakeLists.txt:

      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRTI_UNIX")
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRTI_LINUX")
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRTI_64BIT")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-20
        • 2012-03-02
        • 2014-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-21
        相关资源
        最近更新 更多