搞一天JRTPLIB的編譯,終於搞通了。網上搜集了很多資料,自己也調試了很久。主要的參考是這篇blog: http://leezen.blogbus.com/logs/22052259.html
前面的過程大致一樣:
1.下載JRTPLIB包,具體地址:
http://www.bairuitech.com/upimg/soft/jrtplib-3.7.1.rar
或者http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.Jrtplib。
2.解壓後的檔案夾中包含兩個目錄,jrtplib-3.7.1和jthread-1.2.1,開啟這兩個目錄後我們可以看到下面又有兩個同名的目錄,為了後面能順利編譯,我們把同名目錄下的檔案全部考到上一級目錄中,就是說把c:/jrtplib-3.7.1/jrtplib-3.7.1/*.* 複製到c:/jrtplib-3.7.1/。同理,把c:/jthread-1.2.1/jthread-1.2.1/*.* 複製到c:/jthread-1.2.1/。完成上述步驟後我們就可以開始編譯庫檔案了。
3.這裡使用VS2005中文版加以編譯。首先編譯jthread項目,得到jthread.lib,大概有54kB左右,比VC6編譯出的結果稍大,有兩個warning,但不影響,主要是vs2005與VC6裡面對於this指標不同的規則定義。jthread.lib檔案能一遍順利編譯通過。然後就是jrtplib.lib的編譯工作了。有兩個細節必須注意,否則仍然不能產生需要的jrtplib.lib檔案。一是要把"jmutex.h"和"jthread.h"兩個標頭檔放入jrtplib/src目錄下,二是要把src檔案夾下所有標頭檔中的<jmutex.h>和<jthread.h>語句修改為"jmutex.h"和"jthread.h"。完成上面兩步後,編譯連結就可以順利獲得jrtplib.lib了。
4.就是使用jrtp內建的example了。這裡再編譯example運行之前,需要添加剛才編譯出來的jrtplib.lib和jthread.lib兩個庫,要把這兩個庫檔案放到/Program Files/Microsoft Visual Studio 8/VC/PlatformSCK/lib/裡面,然後再example1的屬性中添加這兩個lib。
添加方法1:[菜單]“項目->屬性->配置屬性->連接器->輸入->附加依賴項”裡填寫“jrtplib.lib jthread.lib WS2_32.lib”,多個 lib 以空格隔開。
添加方法2:在exampl1.cpp檔案中添加
“#pragma comment(lib, "jrtplib.lib") ”
“#pragma comment(lib,"jthread.lib")”
“#pragma comment(lib,"WS2_32.lib")”
另外要將所有的標頭檔也載入到項目中,如“rtpsession.h”,將所有的.h檔案(包括jrtplib.lib和jthread中的所有標頭檔)放到一起,我放到的是myRTPHeader裡面,然後再添加include。
方法1.“項目->屬性->配置屬性->C/C++->常規->附加元件封裝含目錄”
方法2.“工具->選項->項目和解決方案->C++ 目錄”,選擇對應平台,然後添加所需“包括檔案”目錄
5.都添加完畢後,就可以編譯example1了,應該不會有錯了。