OpenDDS安装环境构建+Demo实践(自己动手写一个)

news2024/11/17 13:56:08

此文用于辅助构建类似于OpenDDS\DevGuideExamples\DCPS\Messenger的Demo示例

OpenDDS安装环境构建+Demo实践(自己动手写一个)

  • 本文相关参考资料
  • OpenDDS安装环境构建
    • 参考博客
  • Demo上手实践(依赖于Windows下的OpenDDS环境)
    • OpenDDS安装环境搭建完成
    • Demo实践过程中出现的问题
      • 编写IDL文件出现的问题
      • 编译IDL出现的问题
      • VS2019生成解决方案时的问题

本文相关参考资料

OpenDDS开发者文档

OpenDDS安装环境构建

参考博客

OpenDDS开发环境搭建(Windows 10+Visual Studio 2019)
这是一篇Windows下的环境搭建,要想同步Linux开发环境,参考OpenDDS的GitHub开源网站

Demo上手实践(依赖于Windows下的OpenDDS环境)

OpenDDS安装环境搭建完成

OpenDDS安装环境搭建完成以后,深度参考OpenDDS开发者文档Chapter 2章节内容进行Demo实践流程,这里不赘述具体各项内容,仅分享Demo实践过程中遇到的问题(
1.如果你也遇到了像我一样的问题,欢迎来留言区讨论。
2.如果你遇到了新问题,欢迎来留言区讨论。
3.如果你愿意,我们可以将新问题汇总到这里。我会备注清楚来源,当然你也可以链接出去补充,提前感谢~)

Demo实践过程中出现的问题

编写IDL文件出现的问题

  • IDL注释
    IDL是不能用//注释的,否则会在编译的时候出现问题。例如你在IDL里面定义了一个属性,你想在后面注释它代表什么,我习惯了用//注释,所以当初编译的时候出现过问题,也算一个小问题吧。具体注释的格式我也未细细探究。
  • IDL的版本不同,topic与key的定义语法不同
IDL3:
#pragma DCPS_DATA_TYPE "Demo::Message"
#pragma DCPS_DATA_KEY "Demo::Message id"

IDL4:
用类型注释的方法即可。分别为@topic和@key

如果在编译IDL文件的时候,提示:错误使用了IDL4的特性,是因为你当前默认使用的是IDL3,只需要在编译的时候使用 --idl-version 4 指定IDL的版本为4即可。

  • IDL 匿名序列类型的问题
    算是一个大问题。折腾了我好久。我在之前的IDL文件中定义了一个类型为sequence的属性:
 sequence<double> Data;

导致后续在编译的过程中出现了链接多重定义的问题,排查了好久。发现:

这是官网给出的一段描述,大致意思就是TAO内部已经有了这些序列类型的定义,而你直接定义sequence则会在编译的时候链接报错。修改方法就是上面描述的那样,在你的IDL文件中,包含相关序列类型的pidl文件即可。如下所示:

#include <tao/DoubleSeq.pidl>
module Demo {
    @topic
    struct Message {
        @key long id;      
        double a;  
        double b;  
        double c;  
        CORBA::DoubleSeq Data;  
    };
};

编译IDL出现的问题

这里有两种编译方式,一种是MPC工具,一种是显式执行tao_idl,opendds_idl。网上的大多数教程,在使用MPC工具直接生成vs2019的.sln文件的时候并没有生成相应的DemoTypeSupport*的IDL类型支持文件,生成解决方案时也会出现错误(一般生成解决方案的时候会给你提示相关错误),究其原因,就是你的IDL文件本身就存在问题。所以下次用MPC工具之前,可以先用显式执行编译一下你的IDL文件,这时候它会给你提示相应的报错信息,你也好排查IDL文件的错误。

VS2019生成解决方案时的问题

总之我是先把相关的Publisher.cpp,Subscriber.cpp,DataReaderListenerImpl.cpp都完成以后再生成的解决方案,没有尝试未编写就生成解决方案,我看网上的大多数教程评论中出现的问题,根据错误反馈,应该就是这些文件没有补充完成出现的错误。我的建议是,先参照OpenDDS开发者文档将上述三个文件完成以后,再编译。

当你vs生成解决方案,编译都成功的时候,基本上Demo就已完成,简单点的话,你就直接开3个vs终端,转到项目目录下,按OpenDDS开发者文档中的启动顺序,启动即可。如果通信出现问题,就是你的上述3个cpp文件有问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/517789.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android中常见的内存优化及内存泄露场景

避免内存泄露的关键是及时释放不再需要的资源,特别是生命周期较长的资源。在Activity和Fragment的生命周期方法中释放这些资源,如onDestroy()方法中释放线程、集合等引用,避免这些资源的生命周期过长导致内存泄露。 Android内存优化主要有以下几个方面: 合理设置应用的minSdk…

身为企业管理者,必须了解的财务知识

财务管理工作是企业管理工作中的核心内容&#xff0c;也是企业管理工作中的难点内容&#xff0c;对于集团企业来讲更是任务艰巨而又问题频出。然而&#xff0c;信息时代的来临为解决和完善企业财务管理问题提供了新思路&#xff0c;就集团企业而言&#xff0c;财务管理信息化基…

如何解决人力资本管理挑战?

人力资本管理&#xff08;HCM&#xff09;是任何企业成功的一个重要因素。得益于高效、多产和敬业的员工队伍&#xff0c;在此领域找到正确的方法和策略可以推动您取得更大的成果。 但是&#xff0c;除了关注HCM的好处和机会之外&#xff0c;你还需要做好准备&#xff0c;以克…

PCB多层板 : 磁通对消法有效控制EMC

在PCB的EMC设计考虑中&#xff0c;首先涉及的便是层的设置&#xff1b;单板的层数由电源、地的层数和信号层数组成&#xff1b;在产品的EMC设计中&#xff0c;除了元器件的选择和电路设计之外&#xff0c;良好的PCB设计也是一个非常重要的因素。 PCB的EMC设计的关键&#xff0…

初阶数据结构——链表习题

目录 如何快速调试链表习题链表习题移除链表元素链表的中间节点反转链表链表中倒数第k个结点合并两个有序链表链表分割链表的回文结构相交链表环形链表slow和fast一定会相遇吗&#xff1f;如果fast一次走(3、4、5)步呢&#xff1f; 环形链表 Ⅱ思路1&#xff1a;推论思路2&…

数字化时代,探寻BI本质与发展趋势

可能和很多人想象的不同&#xff0c;商业智能BI虽然是信息化、数字化领域内的重要的数据类技术解决方案&#xff0c;但是商业智能BI并不是在当前时代突然冒出来的新应用&#xff0c;而是经过数十年积累的成熟产品。 早在1958年&#xff0c;IBM研究员就将商业智能BI的早期形态定…

计算卸载-论文02-计算资源差分定价

标题&#xff1a;《Differential Pricing-based Task Offloading for Delay-Sensitive IoT Applications in Mobile Edge Computing System》 期刊&#xff1a; IEEE Internet of Things Journal&#xff0c;2022 一、梳理 问题&#xff1a;在计算卸载许多场景中&#xff0c…

低代码平台:10分钟从入门到原理

导航目录 一、低代码概念 二、优势及局限 三、基础功能及搭建 1、业务流程 2、用户权限 3、统计图表 四、使用感受 五、总结 传统的软件研发方式目前并不能很好地满足企业的需求&#xff1a;人员成本高、研发时间长、运维复杂。这时低代码工具的出现为快速开发软件提供…

智慧校园平台源码 智慧班牌源码 人脸识别技术 电子班牌源码 家校互联小程序源码

智慧校园平台源码 智慧班牌源码 人脸识别技术 电子班牌源码 家校互联小程序源码 源码开发环境&#xff1a;Javaspringbootvueelement-uimysql 智慧校园系统定位于中小学教育学校&#xff0c;侧重实际应用&#xff0c;讲究实际&#xff0c;突出加强校园安全监管&#xff0c;德…

冗余-安全设计的基石

冗余构成原理就是在系统中采用2套中央处理器&#xff08;CPU&#xff09;单元&#xff0c;其中1套为工作主机&#xff0c;1套为热备&#xff0c;一旦工作主机发生故障&#xff0c;热备的CPU将自动投入工作&#xff0c;此时热备的CPU变为工作主机&#xff0c;原工作主机故障处理…

五月份了,让我看看有多少金三银四没找到工作的.....

前两天跟朋友感慨&#xff0c;去年的铜九铁十、裁员、疫情导致好多人都没拿到offer&#xff01;现在都已经5月了&#xff0c;金三银四都结束一段时间了。 金三银四都已经结束&#xff0c;大部分企业也招到了自己需要的人&#xff0c;但是我看我的读者们还是有很大一部分人在抱…

GEE:设置下载数据的Nodata值,并在ArcGIS中将空值设置为空

作者:CSDN @ _养乐多_ Google Earth Engine(GEE)是一个功能强大的云平台,用于进行地理空间数据处理和分析。它提供了丰富的数据集和工具,使得在研究和应用中使用遥感数据变得更加便捷。本文将介绍如何使用GEE设置下载的数据的Nodata值,并在ArcGIS软件中将空值设置为空,…

Golang笔记:使用标准库中os.Args和flag包编写命令行界面(CLIs)

文章目录 目的os.ArgsflagFlagSet总结 目的 命令行界面&#xff08;Command-line Interfaces&#xff09;是比较常用的一种软件形式。对于大部分开发运维人员来说很多时候CLIs可能比图形界面更加方便。软件开发时也经常会有需要开发命令行界面形式软件的情况&#xff0c;使用G…

栈和队列:理解与使用

目录 栈 顺序栈结构 链式栈结构 中缀表达式和后缀表达式 顺序栈四则运算 链式栈四则运算 队列 顺序队列结构 链式队列结构 总结 栈和队列是计算机科学中常见的数据结构&#xff0c;它们都是一种线性数据结构&#xff0c;可以对元素进行快速的插入、删除和查找操作。栈…

00后工资太低,现在转行数据分析还能就业吗?,求大佬指点!

当然可以就业&#xff0c;只要专业技能过关。IT是靠技术吃饭的行业&#xff0c;没有复杂的人际关系和面子工程&#xff0c;相对其他行业要纯粹一些。当然&#xff0c;如果你技术不过关&#xff0c;或者跟不上技术更新发展速度&#xff0c;淘汰也是必然的&#xff0c;IT行业不能…

听我一句劝,千万别去外包,两年外包生涯做完,感觉自己废了一半....

先说一下自己的情况。大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近5年的点点点&#xff0c;今年年上旬&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01;而我已经在一个企业干了五年的功能测试…

前端开发和测试的新伙伴:Requestly,让你事半功倍!

目录 引言 痛点 前端测试 后端测试 曾使用的应对措施 Charles Chrome 插件 实现mock工具 Requestly Requestly的功能 流量捕捉方式 请求的修改 响应的修改 请求响应录制 我对Requestly的应用 总结 引言 想必每个前端开发和测试的小伙伴都曾经历过不断地切换页…

CV界的chatgpt出现——Segment Anything能分割万物

目录 一、前言&#xff08;1&#xff09;弱人工智能&#xff08;Weak AI&#xff09;&#xff08;2&#xff09;强人工智能&#xff08;General AI&#xff09;&#xff08;3&#xff09;超人工智能&#xff08;Super AI&#xff09; 二、SAM的一些介绍2.1 模型的结构是什么&am…

React动态路由配置

目录 项目初始化 模块创建 统一导出 全局模块配置选项 核心代码 使用及效果展示 博文适用于react-router v6及以上&#xff0c;其中还有很多值得改进的地方 最近学习react的过程中&#xff0c;思考怎样实现动态路由的配置(最终实现从页面配置最终动态从数据库加载上线模…

C++解析JSON JSONCPP库的使用

首先去GitHub下载JSONCPP的源码&#xff1a; JSonCpp的源码 解压后得到&#xff1a;jsoncpp-master 文件夹 需要的是&#xff1a;jsoncpp-master\src\lib_json 目录下的所有文件和 jsoncpp-master\include\json 目录下的所有文件&#xff0c;在MFC工程目录下新建两个文件夹或…