搞一天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了,应该不会有错了。