VC编程之Windows下VC编译OpenDDS
小标 2018-08-28 来源 : 阅读 1458 评论 0

摘要:本文主要向大家介绍了VC编程之Windows下VC编译OpenDDS,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

本文主要向大家介绍了VC编程之Windows下VC编译OpenDDS,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

OpenDDS是一个OMG组织DDS标准的C++开源实现,OpenDDS同时也提供Java支持。OpenDDS依赖ACE抽象层来提供不同平台的兼容性,同时也依赖于TAO(例如TAO的IDL编译器)。当前OpenDDS有ociweb 
ObjectComputing维护,官方网站//www.opendds.org/。目前OpenDDS支持的平台有Windows,Linux 
family,Android,VxWorks等,可用的编译器包括VC,gcc,QNX gcc等。
1. OpenDDS编译准备


 
OpenDDS如上文所述依赖TAO(TAO依赖于ACE),同时也依赖Perl。Perl在OpenDDS的作用是1. 运行自动测试脚本或OpenDDS例程 
2. 
MPC依赖于Perl生成Makefiles或者VC项目文件。所以编译OpenDDS的第一步需要建立OpenDDS依赖的环境即:编译TAO+ACE、配置Perl环境。

  a. TAO+ACE
  因为TAO依赖ACE,在ACE之上,所以最好捆绑下载配套的ACE+TAO发布版本。ACE+TAO的下载网站//download.dre.vanderbilt.edu/,下载最新版本的ACE+TAO.zip。网站下载有两种版本可供选择Full版和Sources 
  Only版,Full指的是项目文件已经生成的版本(包括GNUMakefiles和VC项目文件),Sources 
  Only版本仅仅包含源代码,需要自己使用MPC生成makefile。
  b. Perl
  Windows环境下,可下载ActiveState 
  Perl。
  c. OpenDDS
  OpenDDS下载地址//download.ociweb.com/OpenDDS/。

2. 安装Perl


 
3. 编译TAO+ACE


 

  编译TAO+ACE可参考//www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/TAO/TAO-INSTALL.html。
  a. 解压ACE+TAO-6.2.6.zip,我的解压路径是D:\。
  b. 设置相关环境变量
  ACE_ROOT设置为zip解压后的根目录,我的为D:\ACE_wrappers;
  TAO_ROOT设置为%ACE_ROOT%\TAO,我的为D:\ACE_wrappers\TAO;
  PATH添加%ACE_ROOT%\lib和%ACE_ROOT%\bin。
  c. 设置config.h
  于%ACE_ROOT%/ace下新建一个配置文件config.h,内容为#include “ace/config-win32.h”。
  d. 编译
  分别打开%ACE_ROOT%\ACE.sln和%TAO_ROOT%\ACE_TAO.sln,依次进行编译。根据解决方案文件名可以得知解决方案对应的VC版本。
   
  
  
    
    
      
        Platform
      
        File Name
    
      
        VC7.1
      
        name_vc71
    
      
        VC8 for desktop/server
      
        name_vc8
    
      
        VC8 for Windows CE/Mobile
      
        name_WinCE
    
      
        VC9 for desktop/server
      
        name_vc9
    
      
        VC10 for desktop/server
      
        name_vc10
    
      
        VS2012
      
        name_vc11
  也可以使用VS命令行工具进行编译。Debug版本和Release版本的编译命令分别如下:

  msbuild ACE_vc11.sln /p:Configuration=Debug > build_ace_debug.log
msbuild ACE_vc11.sln /p:Configuration=Release > build_ace_debug.log

msbuild ACE_TAO_vc11.sln /p:Configuration=Debug > build_tao_debug.log
msbuild ACE_TAO_vc11.sln /p:Configuration=Release > build_tao_debug.log
  
4. 编译OpenDDS
 


 

  a. 解压OpenDDS压缩文件,我的解压路径是D:\
  b. 设置相关环境变量
  设置%DDS_ROOT%为OpenDDS解压后的根目录,我的为D:\DDS;
  PATH添加% DDS_ROOT %\lib和% DDS_ROOT %\bin。
  c. 编译OpenDDS
  打开DDS.sln进行编译。文件名与编译器版本的对应关系与TAO相同。
  NOTE: 
  OpenDDS不提供VS2012版本的工程文件,所以使用VS2012或更高版本的IDE打开解决方案文件时,需要更新解决方案与项目文件。但是在更新过程中有可能出错,我遇到的是pre 
  include路径变成乱码的错误,需要重新更新一下。当然最好的办法是直接使用对应的版本编译。
  可以使用VS命令行工具进行编译。命令如下:
msbuild DDS_vc10.sln /p:Configuration=Debug > build_dds_debug.log
msbuild DDS_vc10.sln /p:Configuration=Release > build_dds_debug.log

5. 运行测试脚本
 


 

  编译完成之后,可以运行测试脚本观察是否OpenDDS环境是否搭建成功。切换到D:\DDS\examples\DCPS\Messenger_Imr目录,运行run_test.pl


  D:\DDS\examples\DCPS\Messenger_Imr>.\run_test.pl > test.log
  

  test.log内容如下:

  
  >>> D:\ACE_wrappers\TAO\orbsvcs\ImplRepo_Service\.\tao_imr_locator.EXE -o imr.ior  -orbendpoint iiop://:15021
>>> D:\ACE_wrappers\TAO\orbsvcs\ImplRepo_Service\.\tao_imr_activator.EXE -o activator.ior -ORBInitRef ImplRepoService=file://imr.ior  -orbendpoint iiop://:14908
>>> D:\DDS\bin\.\DCPSInfoRepo.EXE  -NOBITS -o repo.ior  -ORBuseimr 1 -ORBInitRef ImplRepoService=file://imr.ior
>>> D:\ACE_wrappers\bin\tao_imr.EXE -ORBInitRef ImplRepoService=file://imr.ior shutdown InfoRepo
>>> D:\ACE_wrappers\bin\tao_imr.EXE -ORBInitRef ImplRepoService=file://imr.ior update InfoRepo -l WJY -c "D:\DDS\bin\.\DCPSInfoRepo.EXE  -NOBITS -o repo.ior  -ORBuseimr 1 -ORBInitRef ImplRepoService=file://imr.ior"
>>> D:\ACE_wrappers\bin\tao_imr.EXE -ORBInitRef ImplRepoService=file://imr.ior list -v
.\.\publisher.EXE   -DCPSConfigFile pub.ini -orbendpoint iiop://:16309
.\.\subscriber.EXE   -DCPSConfigFile sub.ini
Message: subject    = Review
         subject_id = 99
         from       = Comic Book Guy
         count      = 0
         text       = Worst. Movie. Ever.
SampleInfo.sample_rank = 0
Message: subject    = Review
         subject_id = 99
         from       = Comic Book Guy
         count      = 1
         text       = Worst. Movie. Ever.
SampleInfo.sample_rank = 0
Message: subject    = Review
         subject_id = 99
         from       = Comic Book Guy
         count      = 2
         text       = Worst. Movie. Ever.
SampleInfo.sample_rank = 0
Message: subject    = Review
         subject_id = 99
         from       = Comic Book Guy
         count      = 3
         text       = Worst. Movie. Ever.
SampleInfo.sample_rank = 0
Message: subject    = Review
         subject_id = 99
         from       = Comic Book Guy
         count      = 4
         text       = Worst. Movie. Ever.
SampleInfo.sample_rank = 0
Message: subject    = Review
         subject_id = 99
         from       = Comic Book Guy
         count      = 5
         text       = Worst. Movie. Ever.
SampleInfo.sample_rank = 0
Message: subject    = Review
         subject_id = 99
         from       = Comic Book Guy
         count      = 6
         text       = Worst. Movie. Ever.
SampleInfo.sample_rank = 0
Message: subject    = Review
         subject_id = 99
         from       = Comic Book Guy
         count      = 7
         text       = Worst. Movie. Ever.
SampleInfo.sample_rank = 0
Message: subject    = Review
         subject_id = 99
         from       = Comic Book Guy
         count      = 8
         text       = Worst. Movie. Ever.
SampleInfo.sample_rank = 0
Message: subject    = Review
         subject_id = 99
         from       = Comic Book Guy
         count      = 9
         text       = Worst. Movie. Ever.
SampleInfo.sample_rank = 0
>>> D:\ACE_wrappers\bin\tao_imr.EXE -ORBInitRef ImplRepoService=file://imr.ior shutdown InfoRepo
test PASSED.
  
  测试通过。
    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言VC/MFC频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程