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

相关推荐
你有按下913的勇气吗3 分钟前
【Agent,RAG,Transform】
linux·运维·服务器
ken22326 分钟前
linux OS : apt update 使用代理与环境变量
linux
小义_16 分钟前
随笔 1(Linux)
linux·运维·服务器·网络·云原生·红帽
Larry_Yanan29 分钟前
Qt网络开发之基于 QWebEngine 实现简易内嵌浏览器
linux·开发语言·网络·c++·笔记·qt·学习
AI+程序员在路上1 小时前
CAN 总线与 Linux SocketCAN C 语言测试程序
linux·c语言·网络
Predestination王瀞潞1 小时前
4.3.3 存储->微软文件系统标准(微软,自有技术标准):VFAT(Virtual File Allocation Table)虚拟文件分配表系统
linux·microsoft·vfat
HalvmånEver1 小时前
Linux:socket套接字编程的基础概念
linux·运维·服务器
程序员老乔2 小时前
Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(二):Valhalla落地,值类型如何让电商DTO内存占用暴跌
java·spring boot·c#
IMPYLH2 小时前
Linux 的 cp 命令
linux·运维·服务器
祝大家百事可乐2 小时前
嵌入式——02 数据结构
c++·c#·硬件工程