织梦CMS - 轻松建站从此开始!

罗索

在VS2008下编译 oSIP2 - 3.1.0

落鹤生 发布于 2010-07-05 21:35 点击:次 
实际我只需要SIP的解析功能,因此只需要把libosip中的osipparser2直接拿出来,而把其他的部分去掉。但是一开始编译的时候还是出现了一些问题。所以说时间长了,再怎么熟悉的东西都会遗忘。记下备查。
TAG:

osip2的版本:libosip2-3.1.0

官方网址:http://www.gnu.org/software/osip/

下载地址:http://www.antisip.com/download/exosip2/

编译环境:Windows XP ,VS2008, Windows Server 2003 Platform SDK SP1(有个错误原因与此有关)

开始编译:

用 VS 2008 打开 %osip2%\platform\vsnet\osip.sln 。解决方案包含两个项目:osip2 和 osipparser2。

首先是编译 osipparser2 出现问题:

1>osipparser2.def : error LNK2001: unresolved external symbol MD5Final
1>osipparser2.def : error LNK2001: unresolved external symbol MD5Init
1>osipparser2.def : error LNK2001: unresolved external symbol MD5Update
1>Debug DLL\osipparser2.lib : fatal error LNK1120: 3 unresolved externals

找到osipparser2.def ,发现输出函数名不对,MD5Final,MD5Init,MD5Update这三个输出函数其实应该为:osip_MD5Update   ,osip_MD5Final,osip_MD5Init ,改正后编译,错误消失。

 

其次编译 osip2 的时候,总是提示下面的错误信息:

C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\prsht.h(666) : error C2016: C 要求一个结构或联合至少有一个成员
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\prsht.h(666) : error C2061: 语法错误 : 标识符“NMHDR”
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\prsht.h(668) : error C2059: 语法错误 : “}”
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\windows.h(238) : warning C4193: #pragma warning(pop) : 没有匹配的“#pragma warning(push)”

仔细分析之下,发现这个错误是由于包含了 "osip2/internal.h" 所致。而 “osip2/internal.h” 内则又包含了 windows.h 标准头文件。经过若干次的修改、编译、失败的过程,偶然发现 internal.h 中有个 _WIN32_WINNT 编译开关,并且条件是 >= 0x0500 的。于是在解决方案资源管理器中的osip2项目上点右键选属性,选中 配置属性-C/C++-预处理器,编辑右边的预处理器定义列表,将 _WIN32_WINNT 行改为 _WIN32_WINNT=0x0500 。按确定关闭属性对话框。再编译 osip2,顺利通过……

(落鹤生)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201007/9786.html]
本文出处:罗索工作室 作者:落鹤生
顶一下
(1)
33.3%
踩一下
(2)
66.7%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容