注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

linux 学习

 
 
 

日志

 
 

[转]使用VC编译oSIP和eXosip过程  

2011-09-27 15:44:17|  分类: 软件安装和配置 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
最近正在学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://blog.csdn.net/cyldone/article/details/5862201#comments     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”,多线程编译。

  评论这张
 
阅读(2693)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018