本篇博客主在系统详细地帮助大家熟悉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应安装在同一系统盘下
二、编译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
注意:这里添加Path路径时,按照下图分开写。尽量不要图省事把几个路径写在一起,因为我当初这样写编译一致出现问题!!!
2、添加config.h文件 在E:\Software\Work\OpenDDS\ACE_wrappers\ace 下新建一个空的配置文件 config.h
文件内容为:#include "ace/config-win32.h"
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
根据自己的系统选择要编译32位还是64位
"项目"-"重定解决方案目标"
生成解决方案(时间较长,请耐心等待)
编译成功界面
方式二:使用命令行编译
从VS进入命令行页面
cd到要编译的文件目录下,使用如下命令进行编译:
msbuild OpenDDS-3.12\ACE_wrappers\ACE_vc14.sln /p:Configuration=Debug
等待编译结果。警告可以忽略。没有报错即编译成功了!
补充: 如果编译不成功,进行如下尝试。
首先检查环境变量是否出错;
也有可能不会一次编译成功,需要多次编译,一次编译成功一部分;
也有可能环境变量未生效,需要重启,检查环境变量后再编译。
报错及解决办法: 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然后按下回车键。
2). 接着就可以看到cvtres.exe这个文件,然后我们复制这个文件。 接着我们找到vs2010所在的安装目录,D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin。接着我们把之前复制好的文件粘贴到这里,覆盖掉原来的文件,在重新编译即可。
3.TAO_ACE_vc14.sln编译可能出现的问题
可能会提示 error C2280: “CORBA::ValueFactoryBase::ValueFactoryBase(const CORBA::ValueFactoryBase &)”: 尝试引用已删除的函数
出现此问题后,修改SecurityLevel3C.h文件
修改类Statement_init,添加选中部分
修改类X509IdentityStatement_init,添加选中部分
三、OpenDDS的编译
1.修改configure
413行插入如下
1242行插入
2.然后使用VS2015命令行工具
3.启动VS的开发人员命令行,定位到E:\OpenDDS-3.12下,输入 .\configure 命令(如果要开启java支持,需要使用 .\configure --java),等待命令执行完毕:
如报错: ERROR: unknown host cygwin, stopped at configure line 319.
解决办法:导致这个错误是因为没有安装cygwin或者是cygwin的环境变量配置错误;
参考www.cnblogs.com/jingchi/p/1…安装cygwin并检查环境变量后在重新编译。
4.编译成功如下图所示,同时会在OpenDDS\OpenDDS-3.12目录下生成DDS_no_tests.sln文件。
同时发现根目录下还会出现一个 setenv.cmd 脚本,这是设置环境变量的脚本,
5.编译DDS_no_tests.sln,方法同上;
附:到这个网站下载微软的软件很方便: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环境下的发布订阅实例。
友友们,点个赞再走吧!