Windows下的OpenDDS编译(超详细)

1,444 阅读5分钟

本篇博客主在系统详细地帮助大家熟悉OpenDDS环境搭建的步骤,希望能对大家的环境搭建有所帮助。

系统介绍了自己的OpenDDS环境编译过程,希望大家能参考我的教程,搭建成功!!

需要注意的是:部分结果输出不一样不用担心,只要不报错就行。(希望大家永不报错)

一、软件准备及安装 1、软件安装包 使用版本是OpenDDS-3.12、ACE+TAO-6.5.10和strawberry-perl,之所以使用ACE+TAO-6.5.10是因为往后的版本没有现成的2015对应的sln了。

相应的软件安装压缩包链接地址如下:

可以直接使用我提供的链接下载,如下:

链接:pan.baidu.com/s/1dXXKsXql…
提取码:jahi 2.可以去官网下载,链接如下:

opendds:

最新地址是:opendds.org/

OpenDDS-3.12地址是:Release OpenDDS 3.12 · objectcomputing/OpenDDS · GitHub

ACE+TAO:

最新地址是:github.com/DOCGroup/AC…

ACE+TAO-6.5.10地址是:Release ACE+TAO-6_5_10 · DOCGroup/ACE_TAO · GitHub

strawberry-perl:

地址是:Strawberry Perl for Windows

二、软件安装简述 这四个软件,安装时都比较简单。建议把Perl、ACE+TAO+CIAO、OpenDDS-3.10都装在同一文件夹OpenDDS下,如下图

VS2015安装参考:blog.csdn.net/ccc36963996…

Perl:不需要破解,直接解压安装到指定目录下就可以(无脑下一步安装,选择一下安装位置即可);

OpenDDS:直接解压到文件夹OpenDDS下,不用安装;

ACE+TAO+CIAO:直接解压到文件夹OpenDDS-3.12下,不用安装;

注:VS2015和ACE+TAO+CIAO、OpenDDS应安装在同一系统盘下

image.png

二、编译ACE_TAO

1、设置环境变量(编译准备工作)

设置环境变量在 计算机--属性--高级系统设置--环境变量--系统变量 中设置

Perl:不用配置,安装时会自动将环境变量配置在系统变量的Path中。检查即可

ACE+TAO+CIAO:依次如下:(注意填写你们自己的地址)

ACE_ROOT: F:\OpenDDS\ACE_wrappers

TAO_ROOT:%ACE_ROOT%\TAO

MPC_ROOT: %ACE_ROOT%\MPC

DDS_ROOT: F:\OpenDDS\OpenDDS-3.12

LD_LIBRARY_PATH: %DDS_ROOT%\lib

PERL5LIB: %DDS_ROOT%\bin\PerlDDS

2)Path变量 在Path中添加:中添加: %ACE_ROOT%\lib %ACE_ROOT%\bin %DDS_ROOT%\lib %DDS_ROOT%\bin

微信图片_20230518105217.png 注意:这里添加Path路径时,按照下图分开写。尽量不要图省事把几个路径写在一起,因为我当初这样写编译一致出现问题!!!

2、添加config.h文件 在E:\Software\Work\OpenDDS\ACE_wrappers\ace 下新建一个空的配置文件 config.h

文件内容为:#include "ace/config-win32.h"

微信图片_20230518105417.png

3、使用VS2015编译(重点) 编译顺序为:

1.OpenDDS-3.12\ACE_wrappers\TAO\TAO_IDL\TAO_IDL_ACE_vc14.sln

2.OpenDDS-3.12\ACE_wrappers\TAO\TAO_ACE_vc14.sln

3.OpenDDS-3.12\ACE_wrappers\ACE_vc14.sln

注:一定要按顺序编译 编译方法:

方式一:使用编译器编译(编译分为三步:打开文件、"项目"-"重定解决方案目标"、生成解决方案)

打开文件eg:选中OpenDDS-3.12\ACE_wrappers\ACE_vc14.sln

image.png

image.png

根据自己的系统选择要编译32位还是64位

image.png

"项目"-"重定解决方案目标"

image.png

生成解决方案(时间较长,请耐心等待)

image.png

编译成功界面

image.png

方式二:使用命令行编译

从VS进入命令行页面

image.png

cd到要编译的文件目录下,使用如下命令进行编译:

msbuild OpenDDS-3.12\ACE_wrappers\ACE_vc14.sln /p:Configuration=Debug

image.png

等待编译结果。警告可以忽略。没有报错即编译成功了!

image.png

补充: 如果编译不成功,进行如下尝试。

首先检查环境变量是否出错;

也有可能不会一次编译成功,需要多次编译,一次编译成功一部分;

也有可能环境变量未生效,需要重启,检查环境变量后再编译。

报错及解决办法: 1.报错信息:# LINK : fatal error LNK1104: cannot open file

解决方案:将ACE_wrappers文件夹的只读属性去掉即可 2.报错信息:# LINK: fatal error LNK1123:转换到COFF期间失败:文件无效或者损坏

解决方案: 1).在电脑的搜索栏里面输入这个,C:\Windows\winsxs\x86_netfx-cvtres_for_vc_and_vb_b03f5f7f11d50a3a_6.1.7601.17514_none_ba1c770af0b2031b然后按下回车键。

image.png

image.png

2). 接着就可以看到cvtres.exe这个文件,然后我们复制这个文件。 接着我们找到vs2010所在的安装目录,D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin。接着我们把之前复制好的文件粘贴到这里,覆盖掉原来的文件,在重新编译即可。

image.png 3.TAO_ACE_vc14.sln编译可能出现的问题

可能会提示 error C2280: “CORBA::ValueFactoryBase::ValueFactoryBase(const CORBA::ValueFactoryBase &)”: 尝试引用已删除的函数

出现此问题后,修改SecurityLevel3C.h文件

修改类Statement_init,添加选中部分

image.png

修改类X509IdentityStatement_init,添加选中部分

image.png

三、OpenDDS的编译

1.修改configure

413行插入如下

1242行插入

2.然后使用VS2015命令行工具

3.启动VS的开发人员命令行,定位到E:\OpenDDS-3.12下,输入  .\configure 命令(如果要开启java支持,需要使用  .\configure --java),等待命令执行完毕:

image.png

如报错: ERROR: unknown host cygwin, stopped at configure line 319.

image.png

解决办法:导致这个错误是因为没有安装cygwin或者是cygwin的环境变量配置错误;

参考www.cnblogs.com/jingchi/p/1…安装cygwin并检查环境变量后在重新编译。

4.编译成功如下图所示,同时会在OpenDDS\OpenDDS-3.12目录下生成DDS_no_tests.sln文件。

同时发现根目录下还会出现一个 setenv.cmd 脚本,这是设置环境变量的脚本,

image.png

image.png

image.png

5.编译DDS_no_tests.sln,方法同上;

image.png

附:到这个网站下载微软的软件很方便:msdn.itellyou.cn/

ActivePerl 下载地址 www.activestate.com/products/pe…

ACE+TAO 下载地址 download.dre.vanderbilt.edu/previous_ve…

OpenDDS 下载地址 opendds.org/

官方文档:

download.objectcomputing.com/OpenDDS/Ope…

其他对应版本:

ActivePerl-5.28.msi

ACE+TAO-6.5.12.zip

OpenDDS-3.14.zip

这些版本对应很重要,我做的时候有一次最后编译OpenDDS的时候提示ACE+TAO的版本太低了,导致重新编译。(我已经编译了很多不同的版本了)

本文写的足够详细了,对于没有经验的新手应该够用了,以后会陆续更新普通发布订阅和Java环境下的发布订阅实例。

友友们,点个赞再走吧!