网上虽然有很多相关文章,但不够详细;几年前编译配置过jrtplib库,现在又要用,就网络很多细节,所有这里将重点细节列到这里;
一:编译:
1:环境: win7 + jrtplib-3.9.1 + jthread-1.3.1 + CMAKE2.8 + VC2008;
目录配置:
可以参考这篇文章:
http://hi.baidu.com/fogball/item/d293c50c26686674bee97e59
2:CMAKE 选择 jthread-1.3.1,设置vc2008工程路径(我设置在jthread-1.3.1 / VC2008 ),
点击 configure配置选择工程编译器, generate,生成VC2008工程文件;
然后用VC2008生成 debug 和 release 的jthread的lib文件;
目录如下图:
3:同第2步:
目录如下图:
二:配置目录:
1:将 jthread.lib 复制到 jrtplbi 的release 和 debug 目录中:如下图:
2:将 jrhread-1.3.1下的 src文件夹 复制到 jrtplib-3.9.1目录下 的src目录中 改名为:jthread; 下图:
三:配置VC2008工程:
1:头文件包含 和 库文件路径:
四:程序应用:
在程序中添加头文件和lib库:简单如下:
#include <rtpsession.h>
#include <rtpudpv4transmitter.h>
#include <rtpipv4address.h>
#include <rtpsessionparams.h>
#include <rtperrors.h>
#ifndef WIN32
#include <netinet/in.h>
#include <arpa/inet.h>
#else
#include <winsock2.h>
#endif // WIN32
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string>
using namespace jrtplib;
#ifdef DEBUG
#pragma comment(lib,"jrtplib_d.lib")
#pragma comment(lib,"jthread_d.lib")
#pragma comment(lib,"WS2_32.lib")
#else
#pragma comment(lib,"jrtplib.lib")
#pragma comment(lib,"jthread.lib")
#pragma comment(lib,"WS2_32.lib")
#endif
int main()
{
return 0;
}
五:注意:
至此:如果按照步骤严格实行是没有问题的,但有一些注意项:
1:应用程序如果是debug版本,rtp库也要用debug版本,应用程序如果是release版本,rtp库也要用release版本; 否则编译无错,运行出错;
2:VC6已经过时了,编译这个版本的jrtplib库有很多问题;
3:以前的文章说:编译JTHREAD,用win32 debug,后面也是。分别对jmutex.cpp和jthread.cpp进行设置,
setting -> c/c++ -> code generation -> debug multithreaded dll,之后build,然后在debug文件夹下生成jthread.lib。
但是我这里没有设置该项,但是编译运行例子也没有发现问题;这个需要注意一下;