我的平台是 VS2015 + OpenDDS-3.13.2
1.OpenDDS下载:
链接:http://opendds.org/downloads.html
建议顺便下载官方文档:http://download.objectcomputing.com/OpenDDS/OpenDDS-latest.pdf
如果文档下载速度太慢可以百度网盘下载:https://pan.baidu.com/s/1fLYh1jA6B1rIAWNFOPtQ0Q
将根目录添加进系统环境变量中:
DDS_ROOT = G:\OpenDDS-3.13.2
2.Perl
OpenDDS是一款跨平台的开源软件,考虑到不同用户的平台和开发环境的需要,使用跨平台语言Perl作为脚本语言。在perl官网上下载ActiveState Perl版本:https://www.activestate.com/products/activeperl/downloads/,选择最新版下载。下载完成之后,直接安装即可。
安装完成之后,cmd输入perl -v进行验证:
出现以上提示,说明安装成功。
3.ACE+TAO下载:
链接:http://download.dre.vanderbilt.edu/
选择?Latest ACE+TAO Micro Release?下面的就可以.
将下载好的压缩文件解压到对应的文件目录下,然后在系统中添加环境变量:
ACE_ROOT: C:\OpenDDS\ACE_wrappers
TAO_ROOT: C:\OpenDDS\ACE_wrappers\TAO
然后在环境变量Path中添加路径:%ACE_ROOT%\lib;%ACE_ROOT%\bin
4.编译ACE+TAO
当ACE+TAO的环境配置好之后,在%ACE_ROOT%\ace目录下新建一个名为config.h的文件,在文件中添加如下内容:#include “ace/config-win32.h”,表示在win32环境下使用。
分别进入%ACE_ROOT%目录、%ACEROOT%\TAO目录,用Visual Studio打开与VS版本匹配的ACE.sln、TAOACE.sln文件,例如VS2015就打开TAO_ACE_vs2015.sln。进入之后重定解决方案目标:项目 -?重定解决方案目标,然后点确定就行,等待自动配置完成
然后编译源码。方法有两种:第一种是直接在VS中选择?生成 -?生成解决方案 ,第二种是启动VS的开发人员命令行,定位到%ACE_ROOT%\TAO下,使用以下命令编译:
msbuild TAO_ACE_vs2015.sln /p:Configuration=Debug;Platform=x64 /m:2
解释下参数:
Configuration=Debug代表debug编译
Platform=x64代表强制编译为64位版本,原因:如果需要使用Java进行OpenDDS开发,考虑到目前绝大多数人都在使用64位版本的JDK,如果不将OpenDDS编译为64位版,则无法进行JNI调用
/m:2?代表使用两个线程并行编译,实测比起单线程能节省不止一半的时间,建议设置为和自己CPU数一致
耗时很长,等待完成即可
5.编译OpenDDS
启动VS的开发人员命令行,定位到G:\OpenDDS-3.13下,输入 .\configure?命令(如果要开启java支持,需要使用 .\configure --java),等待命令执行完毕
如果提示:
ERROR: Could not detect Visual C++ version, try running this script "."from the Visual Studio Command Prompt.Stopped
,请在configure文件中添加下面内容到438行(根据自己使用的vs版本修改,我使用的是2015所以写vs2015或vc14):
$opts{‘compiler_version‘} = "vc14";
此时程序自动生成了DDS.sln文件和setenv.cmd文件,在命令行执行setenv.cmd设置环境变量,然后打开新生成的sln文件、重定项目目标,然后编译源码并等待操作完成
6.测试
OpenDDS自带了很多实例,存放在%DDS_ROOT%\examples和%DDS_ROOT%\tests\DCPS下
随便挑一个运行里面的run_test.pl,能正常收发数据即可.
输入指令perl run_test.pl
运行成功,如下图所示: