1. 程式人生 > >OpenDDS QosXml庫編譯

OpenDDS QosXml庫編譯

OpenDDS QosXml庫編譯

1 概述

在使用OpenDDS過程中,有時候需要對DDS中實體的qos進行配置,第一種辦法是在程式碼中進行硬編碼,第二種是使用xml檔案進行配置。其實DDS原始碼中已經提供了相關支援,甚至都有Qos的xml配置檔案格式,只是缺少一個xml解析庫,所有編譯的時候沒生成對應的庫。下面就講解一下生成QosXml檔案的解析庫。

2 環境介紹

 vs2015
 編譯好的Perl、DDS、ACE_TAO,並配置好環境變數。如果不會編譯請檢視我相關的部落格。
 cmake 3.13.2,並配置好環境變數。

3 xercesc配置

3.1 下載xercesc

地址:http://xerces.apache.org/xerces-c/download.cgi
在這裡插入圖片描述
選擇第一個進行下載。解壓到如下路徑C:\SoftWare\xerces-c-3.2.2
在這裡插入圖片描述

3.2 編譯xercesc

開啟cmake-gui.exe。在C:\SoftWare\xerces-c-3.2.2下新建資料夾build。source code和buiil目錄現在如下。點選cofigure選擇對應的vs2015編譯器,介面還有紅色提示則再次點選cofigure。然後點選Generate生成解決方案。
在這裡插入圖片描述
開啟C:\SoftWare\xerces-c-3.2.2\build下的xerces-c.sln解決方案,點選Library下的xercesc專案進行專案生成。過程中可能會出現找不到Xerces_autoconf_config.hpp和XercesVersion.hpp兩個標頭檔案,但可以在build中搜索到,我這裡在C:\SoftWare\xerces-c-3.2.2\build\src\xercesc\util目錄下。編譯完成後C:\SoftWare\xerces-c-3.2.2\build\src\Debug目錄下會生成xerces-c_3D.lib和xerces-c_3_2D.dll。這裡將這兩個檔案拷貝到C:\SoftWare\OpenDDS\lib下避免後續環境變數問題。

4 編譯ACE_XML_Utils庫

這個庫也是需要xerces庫的支援,故編譯ACE和TAO時沒有生成。
 進入ACE_wrappers下的如下目錄,我這裡是C:\SoftWare\OpenDDS\ACE_wrappers\ace\XML_Utils。
 開啟vs2015開發人員命令列提示,切到C:\SoftWare\OpenDDS\ACE_wrappers\ace\XML_Utils目錄下。
執行命令perl C:\SoftWare\OpenDDS\ACE_wrappers\MPC\mwc.pl -type vc14
注意:C:\SoftWare\OpenDDS\ACE_wrappers\MPC\mwc.pl的位置和你電腦裡的一致。
第一次會說因為沒有xerces出錯。
在這裡插入圖片描述


再次輸入命令:perl C:\SoftWare\OpenDDS\ACE_wrappers\MPC\mwc.pl -type vc14 -features xerces=1
在這裡插入圖片描述
此時觀察當前資料夾,已經生成XML_Utils.sln解決方案了。
在這裡插入圖片描述
開啟XML_Utils.sln解決方案
配置xerces庫。標頭檔案包含目錄中加入C:\SoftWare\xerces-c-3.2.2\src。(xerces的標頭檔案目錄)新增庫xerces-c_3D.lib。
編譯可生成ACE_XML_Utilsd.dll和ACE_XML_Utilsd.lib。在C:\SoftWare\OpenDDS\ACE_wrappers\lib目錄下。

5 編譯OpenDDS_QOS_XML_XSC_Handlerd庫

步驟和4類似。
命令列切到C:\SoftWare\OpenDDS\dds\DCPS\QOS_XML_Handler下。
輸入命令:perl C:\SoftWare\OpenDDS\ACE_wrappers\MPC\mwc.pl -type vc14 -features xerces=1 -features xsc=1
在這裡插入圖片描述
開啟QOS_XML_Handler.sln解決方案,配置xerces標頭檔案和庫檔案,編輯即可在C:\SoftWare\OpenDDS\lib生成OpenDDS_QOS_XML_XSC_Handlerd.lib和OpenDDS_QOS_XML_XSC_Handlerd.dll。

6 測試和使用

同理命令列切到C:\SoftWare\OpenDDS\tests\DCPS\QoS_XML\dump下,輸入命令:C:\SoftWare\OpenDDS\ACE_wrappers\MPC\mwc.pl -type vc14 -features xerces=1。
生成dump.sln解決方案。開啟方案執行一下就知道是否生成功了,至於如何使用也可參看這個例子。