天天看点

Windows下OpenDDS安装

需要准备:Visual Studio,并安装Windows SDK,还需要安装 ActivePerl

1.OpenDDS下载:

链接:http://opendds.org/downloads.html

建议顺便下载官方文档:http://download.objectcomputing.com/OpenDDS/OpenDDS-latest.pdf

如果文档下载速度太慢可以百度网盘下载:https://pan.baidu.com/s/1fLYh1jA6B1rIAWNFOPtQ0Q

2.ACE+TAO下载:

链接:http://download.dre.vanderbilt.edu/

选择 Latest ACE+TAO Micro Release 下面的就可以

下面的安装基于OpenDDS 3.13和ACE+TAO 6.5.3

1.首先解压源码:

假设OpenDDS解压到E:\OpenDDS-3.13,ACE+TAO解压到E:\OpenDDS-3.13\ACE_wrappers

2.然后编译ACE+TAO:

新建环境变量: 

ACE_ROOT = E:\OpenDDS-3.13\ACE_wrappers 

TAO_ROOT = %ACE_ROOT%\TAO 

在系统环境变量Path中添加:

%ACE_ROOT%\bin;%ACE_ROOT%\lib

进入%ACE_ROOT%\ace目录,创建一个名为config.h的文件,内容:

#include "ace/config-win32.h"
           

分别进入%ACE_ROOT%目录、%ACE_ROOT%\TAO目录,用Visual Studio打开与VS版本匹配的ACE_**.sln、TAO_ACE_**.sln文件,例如VS2017就打开TAO_ACE_vs2017.sln。进入之后重定解决方案目标:项目 - 重定解决方案目标,然后点确定就行,等待自动配置完成

然后编译源码。方法有两种:第一种是直接在VS中选择 生成 - 生成解决方案 ,第二种是启动VS的开发人员命令行,定位到%ACE_ROOT%\TAO下,使用以下命令编译:

msbuild TAO_ACE_vs2017.sln /p:Configuration=Debug;Platform=x64 /m:2
           

解释下参数:

  • Configuration=Debug代表debug编译
  • Platform=x64代表强制编译为64位版本,原因:如果需要使用Java进行OpenDDS开发,考虑到目前绝大多数人都在使用64位版本的JDK,如果不将OpenDDS编译为64位版,则无法进行JNI调用
  • /m:2 代表使用两个线程并行编译,实测比起单线程能节省不止一半的时间,建议设置为和自己CPU数一致

耗时很长,等待完成即可

3.编译OpenDDS

启动VS的开发人员命令行,定位到E:\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文件中添加下面内容到420行(根据自己使用的vs版本修改,我使用的是2017所以写vs2017):

$opts{'compiler_version'} = "vs2017";
           

此时程序自动生成了DDS.sln文件和setenv.cmd文件,在命令行执行setenv.cmd设置环境变量,然后打开新生成的sln文件、重定项目目标,然后编译源码并等待操作完成。如果是64位系统,也需要编译为64位版本(把Win32换成x64):

Windows下OpenDDS安装

4.测试

OpenDDS自带了很多实例,存放在%DDS_ROOT%\examples和%DDS_ROOT%\tests\DCPS下(java示例在%DDS_ROOT%\java\tests下)

随便挑一个运行里面的run_test.pl,能正常收发数据即可

tips:Java实例会有很多JNI的输出,长得和异常信息差不多,但实际上没有出错,只要最后提示test passed就是成功的