opendds安装教程(Windows)
所需材料
Windows(因为本教程是在windows下安装)
vs2017
perl
ACE+TAO
opendds
如果嫌麻烦可以直接下载我打包好的直接安装:下载地址https://download.csdn.net/download/lcynone/13100339?spm=1001.2014.3001.5503
一、安装vs2017
正常安装即可
二、perl安装
这里我们选择strawberry-perl进行安装,非常简单,首先进入http://strawberryperl.com/选择strawberry-perl-5.32.0.1-64bit.msi
下载直接双击按提示安装即可,安装好后打开cmd,输入perl -v查看,如图:
perl -v
三、ACE+TAO和opendds下载与解压
首先要下载ACE+TAO
去官网https://download.dre.vanderbilt.edu/下载文件
将下载的文件解压和我们即将要下载的opendds文件放在同级目录内如图
接下来下载我们的主角opendds
进入官网https://opendds.org/进行下载,如图:
下载完成后放在与刚刚ACE+TAO文件同级目录下进行解压,如图:
这样我们所有需要下载的文件就已经下载并且解压出来了。
四、ACE+TAO与OpenDDS的编译
注意:编译顺序是ACE->TAO->opendds
一,配置相应的环境变量
1、添加ACE_ROOT
文件名:ACE_ROOT
变量值:(就是刚刚我们下载好的ACE+TAO解压出来的ACE_wrappers文件夹目录)
如图:
2.添加TAO_ROOT
变量名:TAO_ROOT
变量值:(TAO在ACE_wrappers可以找到)
具体如图:
3、添加DDS
变量名:DDS_ROOT
变量值:(解压后的opendds目录)
最后在path中添加路径:
D:\DDS\ACE+TAO-6.4.1\ACE_wrappers\bin
D:\DDS\ACE+TAO-6.4.1\ACE_wrappers\lib
D:\DDS\OpenDDS-3.7\bin
D:\DDS\OpenDDS-3.7\lib
如图:
二,添加config.h文件
进入%ACE_ROOT%\ace目录(如图),创建一个名为config.h的文件,内容:
#include "ace/config-win32.h"
三,开始编译
1、编译ACE
进入%ACE_ROOT%目录(ACE根目录),如图:
用Visual Studio打开与VS版本匹配的ACE_**.sln,进入之后重定解决方案目标:在VS中选择项目 - 选重定解决方案目标,然后点确定就行,等待自动配置完成,随后直接在VS中选择:生成 - 生成解决方案。等待编译完成。
2、编译TAO
进入%ACE_ROOT%\TAO目录,如图:
用Visual Studio打开与VS版本匹配的TAO_**.sln,进入之后重定解决方案目标:在VS中选择项目 - 选重定解决方案目标,然后点确定就行,等待自动配置完成,随后直接在VS中选择:生成 - 生成解决方案。等待编译完成。
3、编译OpenDDS
启动VS的开发人员命令行,定位到OpenDDS根目录,输入 .\configure 命令(如果要开启java支持,需要使用 .\configure --java)如图:
等待执行完毕,此时程序自动生成了DDS.sln文件和setenv.cmd文件,在VS的开发人员命令行(此时依然要定位到OpenDDS根目录)执行setenv.cmd,会自动设置环境变量,然后用vs打开新生成的sln文件、进入之后重定解决方案目标:在VS中选择项目 - 选重定解决方案目标,然后点确定就行,等待自动配置完成,随后直接在VS中选择:生成 - 生成解决方案。等待编译完成。如图:
五、测试
OpenDDS自带了很多实例,打开cmd进入%DDS_ROOT%DevGuideExamples\DCPS\Messenger文件夹,输入run_test.pl
run_test.pl
若如下图显示,能正常收发数据即可,则说明安装成功:
六、补充(持续补充)
1、编译OpenDDS时出现的错误
如果提示:
ERROR: Could not detect Visual C++ version, try running this script "."from the Visual Studio Command Prompt.Stopped
请在configure文件中添加下面内容到414行(行数看情况而定但大多是400行左右,根据自己使用的vs版本修改,我使用的是2017所以写vs2017):
也可通过configure.cmd命令找到对应行数(推荐)如图:
$opts{'compiler_version'} = "vs2017";
定位到对应位置修改
修改后重新回到编译OpenDDS的步骤。