eXosip入门(三):eXosip库的验证
来源:互联网 发布:我叫mt配音演员淘宝 编辑:程序博客网 时间:2024/05/16 17:53
本次我们来验证一下得到的eXosip库是否可用。
PS:为什么要验证呢?不是编译成库后就可以直接使用么?理论上是这样的,但是现实是残酷滴,编译成库文件,只是噩梦的开始,学习的道路不会一帆风顺。
本次只是验证eXosip库是否可用,不需要很复杂的代码,测试代码如下:
// test.cpp#include "stdafx.h"#include <eXosip2/eXosip.h>
#include <stdio.h>#include <stdlib.h>#include <Winsock2.h>
int _tmain(int argc, _TCHAR* argv[]){ int i;
i = eXosip_init(); // 初始化eXosip和osip协议栈
if (i != 0) return -1;
return 0;}
操作步骤如下:
1、在VS2008里创建win32控制台程序工程;
2、将上面的代码保存成test.cpp并加入工程中;
3、将libosip源码包的include目录下的osip2、osipparser2两个文件夹及osip2.dll、osipparser2.dll、osip2.lib、osip2.lib、osipparser2.lib拷到工程内,并在工程设置里面设置好包含路径;
4、需要在工程属性——》链接器——》附加依赖项,增加以下库文件:
eXosip.lib
osip2.lib
osipparser2.lib
Iphlpapi.lib
Dnsapi.lib
ws2_32.lib;
5、然后点击编译,你会惊奇的发现竟然会出现那么多的编译错误!Oh!My GOD!噩梦开始了!!
大致的编译错误如下:
1>eXosip.lib(eXosip.obj) : error LNK2019: 无法解析的外部符号 _osip_transaction_set_naptr_record,该符号在函数 __eXosip_transaction_init 中被引用1>eXosip.lib(eXtl_tcp.obj) : error LNK2019: 无法解析的外部符号 _osip_realloc,该符号在函数 __tcp_tl_recv 中被引用1>eXosip.lib(eXutils.obj) : error LNK2001: 无法解析的外部符号 _osip_realloc1>eXosip.lib(eXtl_tcp.obj) : error LNK2019: 无法解析的外部符号 _osip_strcasestr,该符号在函数 _handle_messages 中被引用1>eXosip.lib(jrequest.obj) : error LNK2019: 无法解析的外部符号 ___osip_uri_escape_userinfo,该符号在函数 __eXosip_dialog_add_contact 中被引用1>eXosip.lib(jresponse.obj) : error LNK2001: 无法解析的外部符号 ___osip_uri_escape_userinfo1>C:\Users\Cheney\Desktop\SIP\eXosipTest\Debug\eXosipTest.exe : fatal error LNK1120: 4 个无法解析的外部命令
产生这些错误是因为需要用到的一些函数在osip库在def文件中没导出。需要修改\libosip2-3.6.0\platform\vsnet目录下面的osip2.def、osipparser2.def两个文件,在文件的末尾导出这些函数,具体如下:
osip2.def:
osip_transaction_set_naptr_record @138
osipparser2.def:
osip_realloc @416
osip_strcasestr @417
__osip_uri_escape_userinfo @418
修改完毕后,重新编译整个解决方案,得到新的dll及lib,更新到eXosip测试工程里面,上述的编译错误即可解决。剩下的事情就是编译调试了。
题外话:其实这些错误对于作者来说可能只是一时疏忽,忘记引出几个函数而已,但是对于初学者及新手来说往往造成巨大的麻烦,或者打击学习信心。本人记得就仅仅为了处理上面的错误,就耗费了一个上午的时间,查阅了大量的网页资料,才找到解决办法。
- eXosip入门(三):eXosip库的验证
- eXosip入门(二):osip库的验证
- exosip
- eXosip入门(一):vs2008编译osip/eXosip
- exosip库
- eXosip入门(七):线程操作
- exosip的注册方法
- eXosip入门(四):eXosip示例程序——注册/认证
- eXosip入门(四):eXosip示例程序——注册/认证 .
- 编译eXosip库
- 关于Exosip的效率问题
- 基于eXosip的SIP客户端
- osip和eXosip的区别
- exosip的安装与使用(原创)/SDP的解析
- osip和exosip在windows下的编译静态库
- osip和exosip在windows下的编译静态库
- windows 下 osip 3.5 和 exosip 3.5 库的编译
- 如何打开osip/eXosip库的trace log 调试信息
- 草根年代--六爷成长记
- 一道算法题:(背包,贪心,动态规划)
- 解决http://dl-ssl.google.com/android连接出错
- c++获取控制台输出
- 背包之01背包、完全背包、多重背包详解
- eXosip入门(三):eXosip库的验证
- C++
- 背包九讲(转载)
- 二叉查找树及平衡二叉查找树
- Hadoop启动之后jps没有NameNode节点
- extjs取多选框里面的值!
- 二叉堆
- 【转载】hbase系统架构及数据结构
- 左偏树