需要準備:Visual Studio,并安裝Windows SDK,還需要安裝 ActivePerl
1.OpenDDS下載下傳:
連結:http://opendds.org/downloads.html
建議順便下載下傳官方文檔:http://download.objectcomputing.com/OpenDDS/OpenDDS-latest.pdf
如果文檔下載下傳速度太慢可以百度網盤下載下傳:https://pan.baidu.com/s/1fLYh1jA6B1rIAWNFOPtQ0Q
2.ACE+TAO下載下傳:
連結:http://download.dre.vanderbilt.edu/
選擇 Latest ACE+TAO Micro Release 下面的就可以
下面的安裝基于OpenDDS 3.13和ACE+TAO 6.5.3
1.首先解壓源碼:
假設OpenDDS解壓到E:\OpenDDS-3.13,ACE+TAO解壓到E:\OpenDDS-3.13\ACE_wrappers
2.然後編譯ACE+TAO:
建立環境變量:
ACE_ROOT = E:\OpenDDS-3.13\ACE_wrappers
TAO_ROOT = %ACE_ROOT%\TAO
在系統環境變量Path中添加:
%ACE_ROOT%\bin;%ACE_ROOT%\lib
進入%ACE_ROOT%\ace目錄,建立一個名為config.h的檔案,内容:
#include "ace/config-win32.h"
分别進入%ACE_ROOT%目錄、%ACE_ROOT%\TAO目錄,用Visual Studio打開與VS版本比對的ACE_**.sln、TAO_ACE_**.sln檔案,例如VS2017就打開TAO_ACE_vs2017.sln。進入之後重定解決方案目标:項目 - 重定解決方案目标,然後點确定就行,等待自動配置完成
然後編譯源碼。方法有兩種:第一種是直接在VS中選擇 生成 - 生成解決方案 ,第二種是啟動VS的開發人員指令行,定位到%ACE_ROOT%\TAO下,使用以下指令編譯:
msbuild TAO_ACE_vs2017.sln /p:Configuration=Debug;Platform=x64 /m:2
解釋下參數:
- Configuration=Debug代表debug編譯
- Platform=x64代表強制編譯為64位版本,原因:如果需要使用Java進行OpenDDS開發,考慮到目前絕大多數人都在使用64位版本的JDK,如果不将OpenDDS編譯為64位版,則無法進行JNI調用
- /m:2 代表使用兩個線程并行編譯,實測比起單線程能節省不止一半的時間,建議設定為和自己CPU數一緻
耗時很長,等待完成即可
3.編譯OpenDDS
啟動VS的開發人員指令行,定位到E:\OpenDDS-3.13下,輸入 .\configure 指令(如果要開啟java支援,需要使用 .\configure --java),等待指令執行完畢
如果提示:
ERROR: Could not detect Visual C++ version, try running this script "."from the Visual Studio Command Prompt.Stopped
,請在configure檔案中添加下面内容到420行(根據自己使用的vs版本修改,我使用的是2017是以寫vs2017):
$opts{'compiler_version'} = "vs2017";
此時程式自動生成了DDS.sln檔案和setenv.cmd檔案,在指令行執行setenv.cmd設定環境變量,然後打開新生成的sln檔案、重定項目目标,然後編譯源碼并等待操作完成。如果是64位系統,也需要編譯為64位版本(把Win32換成x64):
4.測試
OpenDDS自帶了很多執行個體,存放在%DDS_ROOT%\examples和%DDS_ROOT%\tests\DCPS下(java示例在%DDS_ROOT%\java\tests下)
随便挑一個運作裡面的run_test.pl,能正常收發資料即可
tips:Java執行個體會有很多JNI的輸出,長得和異常資訊差不多,但實際上沒有出錯,隻要最後提示test passed就是成功的