Windows下編譯jrtplib.lib和jthread.lib - [網絡編程]
2008-06-01
版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明 http://leezen.blogbus.com/logs/22052259.html
研究了很多文章,自己終於搞定了,總結一下。
JRTPLIB庫是一個RTP協議的開源庫,使用這套庫文件,我們可以創建端到端的RTP連接,實現數據的實時傳輸。
RTP是實時傳輸協議的簡稱。壓縮包可以從這裏獲得:
http://www.bairuitech.com/upimg/soft/jrtplib-3.7.1.rar
或者http://research.edm.uhasselt.be/~jori/page/index.php?n=CS.Jrtplib。
下載jrtplib-3.7.1.rar後,首先將其解壓到一個臨時文件夾中,然後開始後續工作。
首先需要強調的是,jrtplib是一個庫而不是應用程序,編譯後我們獲得的是.lib文件。這個文件是用來實現RTP協議的,意義和我們在寫WIN32程序時用到的kernel.lib一樣。
1、解壓後的文件夾中包含兩個目錄,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/。完成上述步驟後我們就可以開始編譯庫文件了。
2、編譯jrtplib.lib和jthread.lib需要注意VC6要求安裝Vs6sp6,在編譯jrtplib.lib和jthread.lib前,在project——settings——C/C++——Code generation:use run-time library中,對於debug,選擇:Debug Multithreaded DLL,對於release,則選擇:Multithreaded DLL。
3、首先編譯jthread庫,然後將jthread-1.2.1/src內的"jmutex.h"和"jthread.h"兩個頭文件放入jrtplib-3.7.1/src目錄下,然後將jrtplib-3.7.1/src文件夾下所有頭文件中的<jmutex.h>和<jthread.h>語句修改爲"jmutex.h"和"jthread.h",需要修改的文件爲rtpudpv4transmitter.h、rtpsession.h和rtppollthread.h。編譯時注意編譯方式和jthread.lib一致,並且設置路徑包含jtrplib所有頭文件,路徑設置方法:工具--選項--目錄--include files.
4、將編譯生成的jthread.lib和jrtplib.lib拷貝到系統目錄:C:/Program Files/Microsoft Visual Studio/VC98/Lib下。
5、那些example的編譯,需要在cpp文件開頭加上:
#pragma comment(lib, "jrtplib.lib")
#pragma comment(lib, "jthread.lib")
#pragma comment(lib, "WS2_32.lib")//pragma的作用自己上網查吧
編譯的時候,同樣選擇編譯選項:Debug Multithreaded DLL(對於debug);Multithreaded DLL(對於release)。
Project->Settings->Link中Object/library modules:添加jthread.lib jrtplib.lib ws2_32.lib
然後編譯-鏈接-運行就可以了。我在鏈接時還出了個錯,參考http://leezen.blogbus.com/logs/22052169.html。