一、环境
(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" 该方法能编译通过,并且没有警告