oSIP和eXosip编译过程

最近正在学SIP,项目中用到osip和exosip两个SIP开发包,所以就到网上找了找怎么用它们,网上的资料很全,不过没有一个是全都正确的,在这里摘录并补充一些

编译环境:windows XP SP3   VC++6.0 SP6   osip2-3.0.1   exosip2-3.0.1

               Microsoft Platform SDK February 2003

一、         osipparser2的编译(osipparser2是osip2的解析器开发库)

1、 动态库

以osipparser2为工程名,创建空的动态库工程,File-> New-> Projects-> Win32 Dynamic-Link Library:Project Name 输入osipparser2,点击OK即可。

将libosip2-3.1.0/src/osipparser2文件夹下的文件全部复制到我们刚创建的工程的根目录下,并在VC++6.0下将所有的源文件和头文件都加入到工程内,Project-> Add To Project-> Files:在打开的对话框中选择全部*.c和*.h文件,点击OK即可。

将libosip2-3.1.0中的INCLUDE文件夹导入到创建的工程中,Tools-> Options-> Directories:新建-选择浏览-确定。

保存工程,编译,成功!o(∩_∩)o…你会在Debug文件夹中惊喜的发现osipparser2.dll!

2、 静态库

以osipparser2为工程名,创建空的静态库工程,File-> New-> Projects-> Win32 Static Library:Project Name 输入osipparser2,点击OK即可。

导入libosip2-3.1.0/src/osipparser2文件夹下的所有源文件和头文件至工程。

导入libosip2-3.1.0中的INCLUDE文件夹。

保存工程,编译,成功!o(∩_∩)o…你会在Debug文件夹中惊喜的发现osipparser2.lib!

二、         osip2的编译(osip2是osip2的协议栈开发库)

1、 动态库

基本方法同osipparser2,相似处不再赘述。

以osip2为工程名,创建空的动态库工程。

导入libosip2-3.1.0/src/osip2文件夹下的所有源文件和头文件至工程。

导入libosip2-3.1.0中的INCLUDE文件夹。

导入刚才编译成功的osipparser2.lib,Project-> Settings-> Link:Object/library modules填入 osipparser2.lib /NODEFAULTLIB:libcd.lib(避免Warning LNK4098)。

增加OSIP_MT宏,以启用线程库,Project-> Settings-> C/C++:Preprocessor definitions填入OSIP_MT。

选择run-time library为Debug Multithreaded DLL, Project-> Settings-> C/C++:Category选择Code Generation,在Use run-time library 中调整。

鉴于exosip2需要使用PSDK,exosip2又是基于osip2的,故这里提前用到PSDK。使用PSDK的原因是需要用到其中的库,升级系统的Platform SDK,VC++6.0能使用的最新SDK下载地址如下: http://www.microsoft.com/msdownl ... PSP2FULLInstall.htm(VC6的支持已经停止,这是VC6能使用的最新SDK)。

安装完毕之后,进行下面操作。

导入Microsoft Platform SDK的INCLUDE文件夹,移至最上。

导入Microsoft Platform SDK的LIB文件夹,Tools-> Options-> Directories:选择LIB FILES后,新建-选择浏览-确定,移至最上。

保存工程,编译,成功!o(∩_∩)o…你会在Debug文件夹中惊喜的发现osip2.dll!

 

 2、 静态库

以osip2为工程名,创建空的静态库工程。

导入libosip2-3.1.0/src/osip2文件夹下的所有源文件和头文件至工程。

导入libosip2-3.1.0中的INCLUDE文件夹。

加入OSIP_MT宏,以启用线程库。

导入Microsoft Platform SDK的INCLUDE文件夹,移至最上。

导入Microsoft Platform SDK的LIB文件夹,移至最上。

保存工程,编译,成功!o(∩_∩)o…你会在Debug文件夹中惊喜的发现osip2.lib!

 三、         exosip2的编译

1、 动态库

以exosip2为工程名,创建空的动态库工程。

导入libeXosip2-3.1.0/src文件夹下的所有源文件和头文件至工程。

加入OSIP_MT宏,以启用线程库。

选择run-time library为Debug Multithreaded DLL, Project-> Settings-> C/C++:Category选择Code Generation,在Use run-time library 中调整。

导入刚才编译成功的osipparser2.lib osip2.lib和 /NODEFAULTLIB: LIBCD.lib(我编译的时候只加了这个), /NODEFAULTLIB: LIBCMTD.lib。

导入WSock32.Lib IPHlpApi.Lib WS2_32.Lib DnsApi.lib(这个原文没有,也要加上)Microsoft Platform SDK的LIB文件夹中的文件)。

导入libosip2-3.1.0中的INCLUDE文件夹。

导入libeXosip2-3.1.0中的INCLUDE文件夹。

导入Microsoft Platform SDK的INCLUDE文件夹,移至最上。

保存工程,编译,成功!o(∩_∩)o…你会在Debug文件夹中惊喜的发现exosip2.dll!

注:编译这个时,出现一个警告:

exosip2/eXconf.c(548) : warning C4761: integral size mismatch in argument; conversion supplied

不知道会不会有影响

2、 静态库

以osip2为工程名,创建空的静态库工程。

导入libosip2-3.1.0/src/osip2文件夹下的所有源文件和头文件至工程。

导入libosip2-3.1.0中的INCLUDE文件夹。

加入OSIP_MT宏,以启用线程库。

选择run-time library为Debug Multithreaded, Project-> Settings-> C/C++:Category选择Code Generation,在Use run-time library 中调整。

导入Microsoft Platform SDK的INCLUDE文件夹,移至最上。

导入Microsoft Platform SDK的LIB文件夹,移至最上。

保存工程,编译,成功!o(∩_∩)o…你会在Debug文件夹中惊喜的发现exosip2.lib!

 总结:  

建立好自己的工程之后,除了包含应有的头文件之外,要记得添加相应的库文件,主要有以下七个:“exosip2.lib osip2.lib osipparser2.lib WSock32.Lib WS2_32.Lib Dnsapi.lib IPHlpApi.Lib”,前面三个是我们编译得到的oSIP库,后面两个是系统库,最后两个是新安装的PSDK所提供的。将它们考到自己的工程目录下,并且在Project-〉Setting->Link的“对象/库模块”栏中增加。
* 支持多线程的设置:在Project->Setting->C/C++中“分类”一项中选择“常规”,然后再“预处理程序定义”一项中,加入OSIP_MT,MT,NEW_TIMER三个宏以支持多线程;在选择“分类”项中的“Code Generation”,在“Use run-time library”中选择“Multithread”,多线程编译。


 转自:http://blog.csdn.net/s2dongman/archive/2009/06/25/4298641.aspx

你可能感兴趣的:(oSIP和eXosip编译过程)