ubuntu编译opendds开发(C#)

opendds编译

环境准备

1.github下载发布的opendds的linux版本;

2.下载对应 tao+ace版本;

3.解压

配置环境变量

export ACE_ROOT=/home/workspace/opendds/ACE_wrappers

export TAO_ROOT=$ACE_ROOT/TAO

export DDS_ROOT=/home/workspace/opendds/DDS

export PATH=ACE_ROOT/bin:DDS_ROOT/bin:$PATH

export LD_LIBRARY_PATH=ACE_ROOT/lib:DDS_ROOT/lib:$LD_LIBRARY_PATH

export PERL5LIB=$DDS_ROOT/bin/PerlDDS

在/etc/profile文件中添加。

准备编译

1.新建 $ACE_ROOT/ace/config.h, 内容如下:

#include "ace/config-linux.h"

有点类似windows下编译

2.新建$ACE_ROOT/include/makeinclude/platform_macros.GNU, 内容如下:

include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU

配置完以上文件之后,可以进行编译:

编译次序为: ACE -> TAO -> OpenDDS

编译ACE和TAO时,使用

make clean

make

编译opendds时,先配置

./configure

然后编译执行

make -j$(nproc)

source setenv.sh

完成以后,执行

cd DevGuideExamples/DCPS/Messenger

./run_test.pl

测试是否成功。

opendds开发

c++库开发

和windows差不多,只是工具有变化,需要准备idl文件,MWC和Mpc文件。

文件和windows一样,新增的MWC文件:

workspace {

// the -relative and -include cmdlines make it so this workspace

// does not have to be in the $DDS_ROOT directory tree.

// tell MPC to substitute our DDS_ROOT environment variables for relative paths

cmdline += -relative DDS_ROOT=$DDS_ROOT

// tell the projects where to find the DDS base projects (*.mpb)

cmdline += -include $DDS_ROOT/MPC/config

}。

和windows平台一样,需要有一个对外导出的接口,库的编译没有对外导出,所以需要专门的接口方法导出。

准备好其它文件以后,在目录中如下命令:

$ACE_ROOT/bin/mwc.pl -type make

然后执行make命令生成.so文件。

C#调用库开发

1.安装.netCore环境

网上很多不说了。

2.安装vscode.

网上很多不说了。

3.封装调用接口

这里windows一样,唯一尴尬的是,委托回调异常。

windows平台下,直接订阅时注册一个委托,有订阅的数据时直接回调,在windows下没有问题,但是在ubuntu下,方法异常,不能回调,一旦调用对象回调就报错,试了没有解决。换了一种方法,c++接收到数据以后缓存,然后提供接口,外部通过接口获取缓存里面的数据即可。

ubuntu下C#不能回调,c++调用对象异常,有人研究的话说一下。

最后测试验证,程序正常了。目前在ubuntu下只能c#获取数据,不能回调。

最后把所ubuntu的代码也一并上传了。还是windows下的代码里面。

Java接口opendds自带,我就不研究了。

相关推荐
花小璇学linux4 小时前
imx6ull-驱动开发篇42——Linux I2C 驱动框架简介
linux·驱动开发·嵌入式软件
凌肖战4 小时前
编写Linux下设备驱动时两种方案:内核态驱动开发和用户态驱动开发
linux·驱动开发
小清兔4 小时前
c#基础知识
开发语言·数据库·学习·unity·c#·游戏引擎·.net
Wy_编程7 小时前
VS中创建Linux项目
linux
luck_lin7 小时前
linux添加新硬盘挂载分区和数据迁移
linux·运维·分区扩容
iFulling7 小时前
【云原生】CentOS安装Kubernetes+Jenkins
linux·云原生·kubernetes·centos·jenkins
★YUI★8 小时前
学习游戏制作记录(保存装备物品技能树和删除存档文件)8.26
学习·游戏·unity·c#
爱炸薯条的小朋友8 小时前
C#由Dictionary不正确释放造成的内存泄漏问题与GC代系
开发语言·opencv·c#
喜欢你,还有大家9 小时前
Linux笔记10——shell编程基础-4
linux·运维·服务器·笔记
不懂机器人9 小时前
linux编程----网络通信(TCP)
linux·服务器·tcp/ip