1. 程式人生 > >windows xp 使用編譯好的live555的lib和標頭檔案

windows xp 使用編譯好的live555的lib和標頭檔案

一、環境

(1)windows xp

(2)VC6.0

(3)live555的lib,標頭檔案和src檔案,(存放在 D:\LIVE555\INCLUDE ,D:\LIVE555\LIB 和  D:\LIVE555\SRC中)

二、全域性設定

選單Tools->Options->Directories:先設定lib路徑,選擇Library files,在下方填入路徑:

D:\LIVE555\LIB

然後選擇include files,在下方填入路徑:

D:\LIVE555\INCLUDE

然後選擇source files,在下方填入路徑:

D:\LIVE555\SRC

點選OK結束

三、專案設定

(1)新建一個win32控制檯程式。

(2)拷貝testOnDemandRTSPServer.cpp到當前目錄,並新增到專案中。

(3)每建立一個將要使用live555的VC Project,都需要給它指定需要的lib。選單:Project->Settings,然後將Setting for選為All Configurations,然後選擇右邊的link標籤,在Object/library modules附加上

libUsageEnvironment.lib libliveMedia.lib libgroupsock.lib libBasicUsageEnvironment.lib Ws2_32.lib

其中Ws2_32.lib是網路套接字的執行庫。
(4)編譯連結即可。
在連結時,可能會報錯,如下:
MSVCRT.lib(MSVCRT.dll) : error LNK2005: _malloc already defined in LIBCD.lib(dbgheap.obj)等
如果在程式中同時使用了多個函式庫,並且這些函式庫中有些函式名稱有衝突,就會引起LNK2005錯誤。微軟提供了兩套C執行期函式庫,一種是普通的函式庫:LIBC.LIB,不支援多執行緒。另外一種是支援多執行緒的:msvcrt.lib。如果一個工程裡,這兩種函式庫混合使用,可能會引起這個LNK2005錯誤,一般情況下它需要MFC的庫先於普通執行期函式庫被連線,因此建議使用支援多執行緒的msvcrt.lib。
產生的原因是一個函式在兩個不同的Lib中都有匯出(MSVCRTD和LIBC有衝突),有兩種辦法處理:
方法一: MSDN對此的解決方法是增加[/FORCE:MULTIPLE]連線選項. 這方式發現會有警告,但可以編譯通過:
LINK : warning LNK4075: ignoring /INCREMENTAL due to /FORCE specification
MSVCRT.lib(MSVCRT.dll) : warning LNK4006: _malloc already defined in LIBCD.lib(dbgheap.obj); second definition ignored


方法二:新增連結選項:/NODEFAULTLIB:<library> 如:/nodefaultlib:"libcd.lib"  該方法能編譯通過,並且沒有警告