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自带,我就不研究了。

相关推荐
小孙姐8 分钟前
Linux-Day10.系统安全保护&web服务管理
linux·运维·服务器
AOwhisky1 小时前
云计算一阶段Ⅱ——11. Linux 防火墙管理
linux·运维·云计算
wschichi1 小时前
文件编译、调试及库制作
linux
雨笋情缘1 小时前
【2025年8月5日】mysql-8.0.38-linux-glibc2.12-x86_64.tar.xz 安装MySQL操作指引
linux·数据库·mysql
CodeCraft Studio1 小时前
图像处理控件Aspose.Imaging教程:使用 C# 将 SVG 转换为 EMF
图像处理·microsoft·c#·svg·aspose·图片格式转换·emf
路溪非溪2 小时前
以Linux为例补充内存管理基础知识
linux
渡我白衣2 小时前
Linux网络编程:TCP初体验
linux·网络·tcp/ip
builfen2 小时前
gofdt - Go语言设备树构建库
linux
★YUI★2 小时前
学习游戏制作记录(将各种属性应用于战斗以及实体的死亡)8.5
学习·游戏·unity·c#
摇滚侠2 小时前
Linux 系统重置用户密码指南
linux·运维·服务器