Windows下VC編譯OpenDDS

來源:互聯網
上載者:User

標籤:android   des   style   blog   class   code   

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

OpenDDShttp://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.logmsbuild ACE_vc11.sln /p:Configuration=Release > build_ace_debug.logmsbuild ACE_TAO_vc11.sln /p:Configuration=Debug > build_tao_debug.logmsbuild 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.logmsbuild 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.iniMessage: subject    = Review         subject_id = 99         from       = Comic Book Guy         count      = 0         text       = Worst. Movie. Ever.SampleInfo.sample_rank = 0Message: subject    = Review         subject_id = 99         from       = Comic Book Guy         count      = 1         text       = Worst. Movie. Ever.SampleInfo.sample_rank = 0Message: subject    = Review         subject_id = 99         from       = Comic Book Guy         count      = 2         text       = Worst. Movie. Ever.SampleInfo.sample_rank = 0Message: subject    = Review         subject_id = 99         from       = Comic Book Guy         count      = 3         text       = Worst. Movie. Ever.SampleInfo.sample_rank = 0Message: subject    = Review         subject_id = 99         from       = Comic Book Guy         count      = 4         text       = Worst. Movie. Ever.SampleInfo.sample_rank = 0Message: subject    = Review         subject_id = 99         from       = Comic Book Guy         count      = 5         text       = Worst. Movie. Ever.SampleInfo.sample_rank = 0Message: subject    = Review         subject_id = 99         from       = Comic Book Guy         count      = 6         text       = Worst. Movie. Ever.SampleInfo.sample_rank = 0Message: subject    = Review         subject_id = 99         from       = Comic Book Guy         count      = 7         text       = Worst. Movie. Ever.SampleInfo.sample_rank = 0Message: subject    = Review         subject_id = 99         from       = Comic Book Guy         count      = 8         text       = Worst. Movie. Ever.SampleInfo.sample_rank = 0Message: 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 InfoRepotest 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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.