Windows下VC编译OpenDDS

OpenDDS是一个OMG组织DDS标准的C++开源实现,OpenDDS同时也提供Java支持。OpenDDS依赖ACE抽象层来提供不同平台的兼容性,同时也依赖于TAO(例如TAO的IDL编译器)。当前OpenDDS有ociweb
ObjectComputing维护,官方网站http://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的下载网站http://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下载地址http://download.ociweb.com/OpenDDS/

2. 安装Perl


3. 编译TAO+ACE


编译TAO+ACE可参考http://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.

测试通过。

参考文章:

Windows 下使用 VC 编译 OpenDDS 的过程

http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.html#win32

http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/TAO/TAO-INSTALL.html


Windows下VC编译OpenDDS,布布扣,bubuko.com

时间: 2024-12-26 15:19:00

Windows下VC编译OpenDDS的相关文章

windows下vc编译和debug nginx

总体来说,各个步骤以及版本参考官方文档http://nginx.org/en/docs/howto_build_on_win32.html一点没错,有些细节没说清楚. To build nginx: Start MSYS bash. Check out nginx sources from the hg.nginx.org repository. For example: 必须使用源代码仓库中的版本,tar.gz发行包中的虽然是源码,但是不包含windows平台库,否则会提示缺少windows相

【FFmpeg】Windows下FFmpeg编译

转自:http://www.cnblogs.com/dwdxdy/p/3625766.html 由于FFmpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译,需要在Windows下配置一个类似Linux的编译环境.本文主要记录Windows下FFmpeg编译的过程. 1.资源准备 准备编译过程所需的软件工具和源代码. (1). MinGW-MSYS Bundle http://sourcef

图文介绍windows下实现编译ffmpeg工程的详细步骤

本文来自:http://www.cuplayer.com/player/PlayerCode/FFmpeg/2014/0706/1401.html 图文介绍windows下实现编译ffmpeg工程的详细步骤: 1.搭建 MinGW 的编译环境 下载yasm,地址:http://yasm.tortall.net/Download.html 改名为yasm.exe放到C:\WINDOWS\system32 或者 C:\MinGW\msys\1.0\bin文件夹下. 下载 mingw-get-inst

ACE在windows下的编译及配置(VS2010)

ACE在windows下的编译及配置(VS2010) 分类:             -[小西南]-              2013-08-06 16:17     2354人阅读     评论(6)     收藏     举报 目录(?)[+] 1 下载ACE 2 创建ACE的配置文件 3 编译ACE库 4 可为ACE目录设置环境变量 5 VS2010 ACE配置 6 测试操作是否成功 系统:win7 开发环境:Visual Studio 10 ACE版本:ACE-6.2.0 参考了很多师

windows下rabbitmq-c编译(带openssl、无需MinGW)

因为项目原因,需要使用到rabbitmq的c客户端库.首先,参见上一篇windows下openssl编译,如果已经使用cmake编译过了,则先delete cache(File-Delete Cache),否则原来的cmake缓存都在了,将仍然会出现原来的错误. 依次点击configire.generate,可以生成vs sln.如下: 最后使用VS即可生成rabbitmq.4.dll,如下: 测试自带的例子: D:\RabbitMQ Server\rabbitmq_server-3.6.5\s

Windows 下VC++6.0制作、使用动态库和静态库

Windows 下VC++6.0制作.使用动态库和静态库 一.VC++6.0制作.使用静态库 静态库制作 1.如图一在VC++6.0中new一个的为win32 static library工程并新建一个.cpp和一个.h(C++header file)文件 2..cpp程序直接照老师给的打,注意这里需要改错,去掉(long) 3. .h文件需要自己编写格式如下.以head.h为例 #ifndef _HEAD_H_ #define _HEAD_H_ unsigned long unsgn_pow(

Windows下PythonQt编译(vs2015+Qt5.11.2+PythonQt 3.2)

时间:2018年10月22日,学习任何物事都有个探索过程.欢迎留言探讨. 在Qt程序中,添加python进行混合编程,可以使用Python API,但交互起来很麻烦,不友好.网上推荐使用PythonQt框架. 强调下: PythonQt,方便Qt C++程序员,将python引入项目 PyQt PySide,给python程序员,将Qt界面引入项目 本机环境: 1.win7 64 旗舰版 2.Qt 5.11.2(MSVC 2015,32 bit) 3.Python 3.7.0 (32-bit)

Mac平台下的Qt程序在Windows下执行编译运行出现的中文乱码问题

Mac平台下的Qt程序在Windows下执行编译运行时,QString::asprintf()部分会出现的中文乱码问题,之前已经使用QStringLiteral宏解决了一个中文乱码问题: 但是此种情形单凭QStringLiteral宏解决不了. 原因: mac下采用MinGW编译,在Windows下可能是MinGW,也可能是MSV2017等VS编译器编译.如果win平台下是MinGW编译,在mac下写好的程序在win平台下运行不会出现乱码: 如果win下是MSV2017编译就会出现中文乱码,需要

Windows下wxWidgets编译错误的解决方法

Windows下wxWidgets编译错误的解决方法 转自 https://www.jianshu.com/p/b89d205f2cec 错误提示:d:\develop\audacity\wxwidgets-3.1.1\include\wx\platform.h(148): fatal error C1083: 无法打开包括文件: “wx/setup.h”: No such file or directory 解决方法:1.到D:\develop\audacity\wxWidgets-3.1.1