当前位置: 首页 > 工具软件 > Open Perl IDE > 使用案例 >

opendds java实现_VC编程之Windows下VC编译OpenDDS

范文昌
2023-12-01

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

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.

测试通过。

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

 类似资料: