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

相关推荐
---学无止境---12 小时前
Linux内存管理揭秘:页表递归清理与TLB优化机制
linux
jarreyer12 小时前
【ubuntu离线安装Oracle 客户端】ldd /opt/oracle/instantclient_19_8/libclntsh.so
linux·ubuntu·oracle
vvw&12 小时前
如何在 Ubuntu 上安装 PostgreSQL
linux·运维·服务器·数据库·ubuntu·postgresql
星释12 小时前
Rust 练习册 :Pig Latin与语言游戏
游戏·rust·c#
ShiinaKaze12 小时前
Ubuntu 18.04 XRDP 黑屏
ubuntu·xrdp
小跌—12 小时前
Linux:多路转接
linux·网络
csdn_aspnet13 小时前
如何在 Mac、Ubuntu、CentOS、Windows 上安装 MySQL 客户端
linux·windows·mysql·macos·centos
铭哥的编程日记13 小时前
【Linux网络】传输层协议UDP
linux·网络·udp
x_lrong13 小时前
Linux虚拟机配置jupyter环境并在宿主机访问
linux·运维·笔记·jupyter·虚拟机
羚羊角uou13 小时前
【Linux网络】Socket编程TCP-实现Echo Server(上)
linux·运维·服务器