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

相关推荐
JaydenAI27 分钟前
[对比学习LangChain和MAF-07]如何引入人机交互的审批流程
python·ai·langchain·c#·agent·hitl·maf
Net_Walke30 分钟前
【Linux系统】静态链接库与动态链接库
linux·嵌入式硬件
syc78901231 小时前
中文语境下AI编码工具实战对比:从迭代体验看日常开发选择
linux·人工智能·ubuntu
凡人叶枫1 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
北域码匠2 小时前
SHA-1算法:安全哈希原理与应用解析
算法·c#·哈希算法
123的故事3 小时前
工具分享(7)-多Excel文件内容查询工具
c#·excel·实用工具
vsropy3 小时前
Ubuntu网络图标消失问题/有网络问号
linux·运维·ubuntu
coderwu3 小时前
Ubuntu 24.04 终端输入 openclaw config 提示未找到命令解决办法
linux·运维·ubuntu
iCxhust5 小时前
C#进程管理程序
开发语言·汇编·stm32·单片机·c#·微机原理
凡人叶枫5 小时前
Effective C++ 条款28:避免使用 handles 指向对象内部
linux·服务器·开发语言·c++·嵌入式开发