eXosip入门(三):eXosip库的验证

基于exosip 编写呼叫流程实例 1、已经编译生成号exosip相关库, 2、复制如下代码生成UAC,该实例使用的是windows控制台程序,对于sdp的解析部分需修改一下 代码如下: #include <eXosip2/eXosip.h> #include <stdio.h> #include <stdlib.h> #include <winsock2.h> int ma... 阅读详情

      本次我们来验证一下得到的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_realloc
1>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_userinfo
1>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测试工程里面,上述的编译错误即可解决。剩下的事情就是编译调试了。

    题外话:其实这些错误对于作者来说可能只是一时疏忽,忘记引出几个函数而已,但是对于初学者及新手来说往往造成巨大的麻烦,或者打击学习信心。本人记得就仅仅为了处理上面的错误,就耗费了一个上午的时间,查阅了大量的网页资料,才找到解决办法。

osip2/eXosip2调试笔记  软件版本:libosip2-3.3.0.tar.gzlibeXosip2-3.3.0.tar.gz  ./configure --prefix=/opt/sip/target --disable-staticmakemake install  测试代码: 代码来源:http://blog.youkuaiyun.com/bat603/archive/2006 阅读详情

相关推荐

基于eXosip的SIP客户端

sip客户端部分代码

Cong的专栏 1万+

FFmpeg4.3系列之28:SIP+eXosip+pjsip小白入门

敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。我将带领大家一起来学习:学习sip协议的基本原理、流程、结构;编译开源库源码osip,eXosip,pjsip(包括windows和Linux两套环境);使用eXosip或pjsip进行案例实战;具体内容包括:  1.sip协议讲解,包括原理、结构、协议内容、流程分析等。2.osip与eXosip的源码编译,使用eXosip进行案例实战并详解流程。3.pjsip的源码编译,使用pjsip进行案例实战并详解流程。

【eXosip】注册与处理推流请求处理逻辑总结

exosip库构建信令服务总结

gma999的博客 1627

国标28181:libeXosip2应该如何使用

初始化 初始化eXosip并准备传输层 使用eXosip时,第一步是初始化eXosip上下文和libosip库(解析器和状态机)。此外,您需要准备传输层,并选择UDP、TCP、TLS或DTL。 以下是基本的强制设置: 初始化osip跟踪(使用-DENABLE_trace编译此代码) #include <eXosip2/eXosip.h> eXosip_t *ctx; int i; int port=5060; TRACE_INITIALIZE (6, NUL

OceanStar的博客 6090

eXosip与SIP协议事件处理实战指南

SIP协议作为实时通信的核心协议,通过建立、修改和终止多媒体会话实现VoIP等应用。其事件驱动机制类似HTTP请求-响应模型,但专为低延迟场景优化。eXosip作为轻量级开源实现,提供完整的SIP事务处理能力,特别适合嵌入式系统。在开发企业级IP电话系统时,正确处理REGISTER注册事件和INVITE会话事件是关键,涉及认证挑战处理、SDP协商等核心技术点。通过事件循环和多线程模式优化,配合Wireshark抓包分析,可有效解决403注册失败、呼叫超时等典型问题。

weixin_28396629的博客 256

基于eXosip的SIP注册实例详解与实战

本文还有配套的精品资源,点击获取 简介:SIP(Session Initiation Protocol)是用于控制语音和视频等多媒体通信会话的关键信令协议,而SIP注册是实现用户可达性的核心步骤。本文以“sip注册例子”为基础,详细解析如何在Visual Studio 2008环境下使用开源库eXosip实现SIP用户代理的注册流程。该实例涵盖初始化SIP堆栈、构建REGISTER请求、处理服务器响应及维持周期性注册等关键环节,适用于初学者掌握SIP协议基本通信机制与eXosip API的实际应

weixin_34620658的博客 1056

eXosip入门(二):osip库的验证

上次我们已经生成了osip的库文件,接下来我们可以验证一下得到的开发库是否可用,并大概了解一下osip的语法规范。     在osip源码包下的src\test目录下包含了大量的测试源码,其中C文件为源程序,res目录下的txt文本文件为该测试程序要用到的资源文件,两者的文件名大致对应,例如:callids.txt对应tcallid.c。test目录下的文件基本上是测试了osip的一些基本功能函

CheneyMei的博客 7967

OneNET物模型实战:如何用NB-IOT模块上传JSON数据并解析

本文详细介绍了如何利用NB-IOT模块将传感器数据上传至中国移动OneNET物联网平台,并利用其物模型功能实现JSON数据的自动解析。文章从理解OneNET物模型与OneJson协议入手,逐步讲解了平台侧物模型创建、设备注册,以及设备端数据构造、HEX编码与NB-IOT模块AT指令上报的全流程,并提供了关键的调试技巧与常见问题排查方法,为物联网开发者提供了完整的实战指南。

sugar的博客 680

exosip 与 osip 库源码下载及编译方法

本文介绍了开发SIP应用时常用的两个开源库osip2和exosip2的安装方法。osip2提供底层SIP协议支持,exosip2封装了更高层API。文章详细说明了从官方或国内镜像站下载源码的多种方式,包括使用GitHub镜像和多线程下载工具加速。重点讲解了编译安装顺序:先安装osip2,再安装exosip2,并配置动态库路径。最后提供了验证安装和解决国内下载慢的方案,帮助开发者快速搭建SIP开发环境。

qq_50635297的博客 1088

SAP FICO实操:如何修改已发生业务数据的成本中心公司代码(附RKACOR06程序运行指南)

本文详细解析了SAP FICO系统中使用RKACOR06程序修改已发生业务数据的成本中心和公司代码的实操方法。通过实战案例分享,提供从前期准备到后期验证的全流程指南,帮助企业应对组织架构重组或财务核算体系调整时的数据迁移挑战,特别适用于跨公司代码的成本中心划转场景。

weixin_27303545的博客 189

python 爬取携程全国旅游景点信息-2024.4.13

携程网是中国领先的在线旅行服务公司,提供酒店预订、机票预订、旅游度假、商旅管理等服务。携程网上有大量的旅游景点和酒店信息,这些信息对于旅行者和旅游业者都有很大的价值。通过爬虫技术,我们可以从携程网上获取这些信息,并进行数据清洗、数据分析、数据可视化等操作,从而得到有用的洞察和建议。

britlee的博客 1万+

eXosip.c

static jauthinfo_t *eXosip_find_authentication_info (const char *username, const char *realm); eXosip_t eXosip; void __eXosip_wakeup (void) void __eXosip_wakeup_event (void) 都是调用jpipe_write ()向pipe写。...

张继飞的专栏 1006

一阶电路基础知识

一阶电路(First-order circuit)是指由一个电感(L)或一个电容(C)和一个电阻(R)组成的电路。根据电感或电容的位置,一阶电路可以分为RC电路、RL电路、LC电路、RLC电路。一阶电路常用于滤波、放大、时序控制等各种电子设备和系统中。通过调整电阻、电容或电感的数值,可以改变电路的频率响应、滞后/提前相位等特性,实现不同的功能和性能一阶、二阶电路区别一阶电路由一个电容或一个电感与一个电阻组成,而二阶电路则由两个电容或两个电感与一个电阻组成。

weixin_45365488的博客 1万+

oSIP协议栈(及eXoSIP、Ortp等)使用入门(转)

oSIP协议栈(及eXoSIP、Ortp等)使用入门(转)   转自http://mbstudio.spaces.live.com/blog/cns!C898C3C40396DC11!955.entry   一直没空仔细研究下oSIP,最近看到其版本已经到了3.x版本,看到网上的许多帮助说明手册都过于陈旧,且很多文档内容有点误人子弟的嫌疑~~   Linux下oSIP的编

wanghaobo920的专栏 3727

避坑指南:STM32CubeMX配置SDIO4bit模式时为什么卡在HAL_SD_ConfigWideBusOperation?

本文深入分析了使用STM32CubeMX配置SDIO 4位模式时,程序在HAL_SD_ConfigWideBusOperation函数处卡死的常见问题。文章从硬件连接、CubeMX配置、初始化序列及HAL库底层实现等多个维度剖析根源,并提供了从初始化流程优化到增强代码鲁棒性等实战解决方案,帮助开发者彻底解决这一棘手难题。

pca5navigator的博客 825

Android存储空间不足下,APP出现奔溃等情况

版权声明:本文为博主原创文章,未经博主允许不得转载。 1. 问题起因     实时录制视频,使用getExternalCacheDir()函数返回的路径作为文件缓存区 2. 问题产生     系统在空间不足的情况下第一清除getExternalCacheDir和getCache文件下的缓存,导致正在录制的视频出现Error。 3. 解决方案     第一

OverseasAndroid的博客 4160

eXosip2 初识

基础库介绍 [eXosip2]([The eXtended osip library - Summary Savannah] (nongnu.org)) osip2 osip 是一个应用于 sip 开发的库,因为本身接口函数偏过于底层,eXosip 在其基础上进行了二次封装。两个库需要一起使用,缺一不可,版本随意。 linux 环境下安装步骤: 下载 osip2 eXosip2 源码 解压 osip2 源码包 进入对应文件夹,依次执行命令 ./configure 、 make 、make insta

橘子霸霸的专栏 888

9篇9章1节:认识 SHARE 数据库

SHARE数据库是欧洲最大的跨国老龄化追踪调查项目,覆盖28个欧洲国家和以色列的50岁及以上人群。自2004年启动以来,已完成14-16万受访者的50-60万次访谈,形成跨度20年的纵向数据。该数据库采用标准化的多阶段抽样方法,收集健康、经济和社会关系等领域的多维度信息,具有高度的跨国可比性。SHARE与美国HRS、英国ELSA等调查对接,构成全球老龄化研究网络。数据免费向科研人员开放,但需注册并承诺仅用于非商业性研究。该项目由欧盟委员会等多方资助,为老龄化研究和政策制定提供了重要实证依据。

MD Code 900

eXosip认证头域authentication

eXosip认证头域authentication 文章目录eXosip认证头域authentication认证相关函数接口eXosip_add_authentication_infoeXosip_remove_authentication_infoeXosip_clear_authentication_info 认证相关函数接口 eXosip_add_authentication_info 添加身份验证凭据。 /** * Add authentication credentials. These are

yjkhtddx的专栏 956

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Linux下osip2+eXosip2的编译及开发

Linux下osip2+eXosip2的编译及开发   1、安装包准备 osip2:http://www.gnu.org/software/osip/ eXosip2:http://savannah.nongnu.org/projects/exosip/ 我下载的版本分别是:libosip2-5.0.0.tar.gz,libexosip2-5.0.0.tar.gz   2、安装 (

jw2016的博客 4082

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

eXosip REGISTER认证过程

eXosip_add_authentication_info  eXosip_register_build_initial_register  eXosip_register_send_register 发送 发送一个注册包 eXosip_clear_authentication_info(); eXosip_add_authentication_info(m_u

好久都没有更新博客喽,工作原因只能总结在内部机上:-( 4665

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

oSIP协议栈(及eXoSIP、Ortp等)使用入门

http://ghj19850926.blog.163.com/blog/static/18591560201241410033429/

spivic的专栏 1816

exosip注册/认证的例子程序

#include #include #include #include #include void process_event(); void Register(); int m_nregid=0;//注册id int main() { int i=0; i=eXosip_init(); if(i!=0) return -1; printf("=======

zhuxian2009的专栏 3899

oSIP协议栈(及eXoSIP,Ortp等)使用入门(原创更新中)

本文档最新版本及文中提到的相关源码及VC6工程文件请在本站找,嘿嘿~~(LiveDriver公开文件夹中!) (最近工作重心不在SIP开发,SO本文档也没有机会更新,有技术问题也请尽量咨询他人,本人不一定能及时回复。)   一直没空仔细研究下oSIP,最近看到其版本已经到了3.x版本,看到网上的许多帮助说明手册都过于陈旧,且很多文档内容有点误人子弟的嫌疑~~  Linux下oSIP的编译使

xwchen的专栏 2525

保姆级教程:在Ubuntu 22.04上从源码编译安装eXosip2 5.1.2(附完整配置流程)

本文提供在Ubuntu 22.04上从源码编译安装eXosip2 5.1.2的完整指南,涵盖环境准备、依赖处理、源码编译、常见问题解决及环境验证等关键步骤。通过详细的配置流程和实用技巧,帮助开发者快速搭建稳定的SIP开发环境,适用于UAC/UAS等SIP协议相关项目开发。

weixin_30316097的博客 218
上一篇: eXoisp用户手册:1.3 如何发送或者升级注册
下一篇: eXosip入门(四):eXosip示例程序——注册/认证
cheneymei
博客等级 码龄16年 144粉丝 9原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值