windows下搭建OpenDDS环境

windows下搭建OpenDDS环境

OpenDDS是一个OMG组织DDS标准的C++开源实现,OpenDDS同时也提供Java支持。OpenDDS依赖ACE抽象层来提供不同平台的兼容性,同时也依赖于TAO(例如TAO的IDL编译器)。OpenDDS如上文所述依赖TAO(TAO依赖于ACE),同时也依赖Perl。Perl在OpenDDS的作用是1. 运行自动测试脚本或OpenDDS例程 2. MPC依赖于Perl生成Makefiles或者VC项目文件。所以编译OpenDDS的第一步需要建立OpenDDS依赖的环境即:编译TAO+ACE、配置Perl环境。
一、安装Perl
在线下载:https://www.activestate.com/activeperl/downloads
直接安装即可,很简单,安装完成后验证:
windows下搭建OpenDDS环境_第1张图片
二、编译TAO+ACE
先说自己遇到的问题,后面会有详细编译步骤
问题一:我是VS2010,编译ACE_vs10.sln时出现以下错误
这里写图片描述
原因及解决办法:
http://www.cnblogs.com/newpanderking/articles/3372969.html
http://www.cnblogs.com/croot/p/3525322.html
我删掉了..\Microsoft Visual Studio 10.0\vc\bin\cvtres.exe,问题解决
问题二:
编译ACE_vs10.sln和TAO_ACE_vc10.sln时均出现以下错误:
windows下搭建OpenDDS环境_第2张图片
Google了很多,奈何自己能力有限尝试各种方法也都无济于事,最后决定给vs2010打补丁试一试
VS2010安装补丁:
所需软件:VS2010 service pack1(自行搜索下载)
vs2010打补丁有两种方式,一是在线安装,据说耗时比较长,所以我选择第二种;二是下载iso文件后离线安装,iso大概1.5G左右,使用deamon tool lite进行安装,在查资料的时候发现大家都说会卡在KT-983509的地方,我到这里的时候也卡了半天,折腾了一天的我这时候心都凉了,找了很多方法打算一一仔细查看,就当我心灰意冷的时候它居然顺利装完了,所以大家有时候不要完全听别人的经验,要自己动手去做。最后装完就可以了。
windows下搭建OpenDDS环境_第3张图片
至此编译TAO+ACE的准备工作做好,接下来解压、配置环境变量、添加config.h、编译
软件下载:http://download.dre.vanderbilt.edu/
windows下搭建OpenDDS环境_第4张图片
我是64位win7,所以下载了上面第三个,选择full和source only都可以,区别我的理解是full版本里面已经生成好了各种版本的工程文件,source only版本需要你自己根据mwc文件使用mwc.pl去生成对应版本的工程文件,我自己这里有点混乱(以前是使用VS2008编译的,vs各版本之间混用会有一些问题吧),所以选的source only版本的自己生成。

  • 解压
    解压到目录,例如我把ACE和DDS都放到了openDDS的目录下,C:\openDDS\ACE_wrappers,C:\openDDS\DDS
    设置环境变量:
    添加方环境变量方法自己百度,
    ACE_ROOT= C:\openDDS\ACE_wrappers//就是你的存放路径
    TAO_ROOT= C:\openDDS\ACE_wrappers\TAO
    在Path后面加:%ACE_ROOT%\lib; %ACE_ROOT%\bin
    注意分号

  • 添加config.h
    在%ACE_ROOT%/ace下添加config.h文件,内容为

 #include "ace/config-win32.h"
  • 生成工程文件
    你自己下载的版本里面有对应的工程文件就可以跨过这一步
    根据自己编译器版本来选择,使用mwc来生成工程文件的命令:
    进入%ACE_ROOT%,mwc.pl –type vc10 –name_modifier “_vc10” ACE.mwc
    上面的命令是利用ACE.mwc生成ACE_vc10.sln文件,其他ACE_TAO_vs10.sln和DDS_vc10.sln同理可得,–type指定生成的vs版本,vc9对应vs2008,vc10对应得是vs2010,-name_modifier指定生成的工程文件的名字,可以使–help来查看。

  • 编译
    生成完工程文件就可以编译了,可以使用IDE编译,也可以使用VS的命令行工具编译,下面介绍后面这种方法,打开vs2010的命令提示窗口
    输入以下命令:msbuild ACE_vc10.sln /p:Configuration=Debug > build_ace_debug.log
    将日志信息都输出到了build_ace_debug.log文件中,可以再同目录下面找到,查看编译信息
    这里写图片描述
    windows下搭建OpenDDS环境_第5张图片
    以上ACE的编译完成,然后进入TAO目录,按照上述步骤生成TAO_ACE_vc10.sln,编译,结果如下
    windows下搭建OpenDDS环境_第6张图片
    至此TAO+ACE的编译工作完成,接下来可以编译OpenDDS了

三、编译OpenDDS
下载:http://opendds.org/
解压OpenDDS到相关文件,设置环境变量
DDS_ROOT=C:\openDDS\DDS //这里是你自己的解压目录
添加Path:%DDS_ROOT%\lib;%DDS_ROOT%\bin
windows下搭建OpenDDS环境_第7张图片
生成DDS的VS工程文件:mwc.pl –type vc10 –name_modifier “_vc10” DDS.mwc
并使用VS命令行工具编译:
windows下搭建OpenDDS环境_第8张图片
windows下搭建OpenDDS环境_第9张图片
至此DDS编译完成,下面我们通过运行测试脚本来测试一下我们搭建的OpenDDS环境是否成功。切换到%DDS_ROOT%\example\DCPS\Messenger_Imr目录,运行run_test.pl
这里写图片描述
最后出现test PASSED就是成功啦

本人小白,期间还是走了很多弯路,多看一点也会有很多收获,还是要多动手动脑多google
以上内容如有错误请指出,希望互相交流互相学习
参考:
http://blog.csdn.net/xinqingwuji/article/details/53355202
http://www.cnblogs.com/joeywang/p/3719702.html
http://www.voidcn.com/article/p-wewcctdy-bgk.html
http://www.voidcn.com/article/p-beiipfkz-bdt.html

你可能感兴趣的:(dds)