osip开源库在windows平台上编译

news2024/11/17 7:55:24

背景

之前写过一篇关于sip协议栈选型的文章,最终采用了osip 2.3.6版本,文章中说明了为什么采用osip协议栈,以及为什么采用2.3.6版本。现在Linux上的产品已经基本满足需求了,接下来我们打算开发一套客户端和服务端对接,考虑到windows与Linux使用同一套源码,减低维护成本,所以在windows下我们依旧选择2.3.6版本,在编译的时候遇到一些坑,在此记录一下,方便自己和道友后续参考。

本次编译使用的硬件环境是windows10 + vs2017

编译

osip使用包含两个原码包,osip与eXosip,其中eXosip依赖于osip,所以我们先编译osip源码包,osip源码包包含两个库,分别是osip2和osipparser2。

osip编译

编译windows sdk version 选择8.1。如果选10.0编译失败,原因未知。

由于源代码与对于部分函数未导出,所以如果编译生成动态库,在编译libeXosip时会报错,需要我们手动补充几个未导出的函数。

osip2.def

文件尾添加

     osip_transaction_set_naptr_record @138

osipparaser2.def

文件尾添加

     osip_realloc @416
     osip_strcasestr @417 
     __osip_uri_escape_userinfo @418

 点击编译生成即可,完成osip编译。

eXosip编译

windows sdk 版本参考osip,依旧选在8.1。添加osip的头文件与生成库,去掉openssl的宏定义,添加4个系统依赖库“WSock32.Lib WS2_32.Lib DnsAPI.Lib IPHlpApi.Lib”,即可。

 点击编译生成即可完成libeXosip库的编译。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/682407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子邮件机器人和聊天机器人如何使您的客户支持受益?

当我们谈论客户支持中的人工智能时,通常会想到基于Web的聊天机器人。然而,现代人工智能的进步使电子邮件机器人成为客户支持自动化的下一个风口,使组织能够满足人们对于快速便捷的全渠道体验的期望。 有些人认为,与Facebook Mess…

“兆易创新杯”第十八届中国研究生电子设计竞赛有感

今年的电赛给我的感觉是时间真的紧张,可能是因为去年有疫情原因影响所以能准备的时间到七月份,今年不到月底就要全部出成品。我们团队一直在自研一款增强现实眼镜,从硬件设计到软件实现全部由我和另外两个小伙伴一起完成,所以就把…

matlab实现声音录制与左右声道分离

基础知识 1.MATLAB识别的常用语音信号类型: WAV格式 TXT格式 2.读取wav格式语音用函数:wavread 常用格式: ywavread(‘语音文件名’) [y,fs]wavread (‘语音文件名’) 用于读取语音,采样值放在向量y中,fs表示采样频率。 3.读取wav格式语音用…

动态代理与Spring Aop

动态代理 JDK 动态代理 使用JAVA反射包中的类和接口实现动态代理的功能,JAVA.lang.reflect包;主要是三个类: InvocationHandler,Method,Proxy; CGLIB动态代理,第三方工具类库,创建代理对象,cglib的原理是继…

城市内涝监测需要什么设备

近年来,随着城市化进程的加快,城市内涝问题愈发突出。强降雨、缺乏排水设施和过度的人类活动等因素,导致城市内涝灾害频发。内涝不仅给居民生活和财产安全带来威胁,还对城市基础设施和经济发展造成严重影响。 为了应对城市内涝灾…

spring中事务失效的情况(常见的5种)

1.多线程调用 从上面的例子中,我们可以看到事务方法add中,调用了事务方法doOtherThing,但是事务方法doOtherThing是在另外一个线程中调用的。 这样会导致两个方法不在同一个线程中,获取到的数据库连接不一样,从而是两…

centos7宝塔项目配置步骤

0、 1、 2、前面两个空格去掉勾 3、window 配置虚拟机 对应的域名

Django高级扩展之celery使用

Celery是一个简单、灵活、可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具。是一个专注于实时处理的任务队列,同时还支持任务调度。 目录 应用场景 问题 解决 celery架构图 安装 配置celery Settings.py配置…

CVE-2022-25099

文章目录 CVE-2022-25099一、漏洞介绍二、渗透步骤1、打开网站2、登录后台3、文件上传4、查看flag值 CVE-2022-25099 一、漏洞介绍 WBCE CMS v1.5.2 RCE。 WBCE CMS v1.5.2 /language/install.php 文件存在漏洞,攻击者可精心构造文件上传造成RCE。 二、渗透步骤 1…

宝塔面板实用教程(1):10分钟部署在线客服系统

客服系统发布以来,一直有朋友询问如何在宝塔面板中安装部署,开始我一直认为参考 Linux 版的安装教程就可以了,一直没有专门写宝塔环境的教程。这段时间来咨询的朋友越来越多,经过了解,我才知道宝塔面板的普及率有多高&…

SSM流浪动物救助网站-计算机毕设 附源码82131

SSM流浪动物救助网站 摘 要 随着生活水平的持续提高和家庭规模的缩小,宠物已经成为越来越多都市人生活的一部分,随着宠物的增多,流浪的动物的日益增多,中国的流浪动物领养和救助也随之形成规模,同时展现巨大潜力。本次…

XML文件

xml文件 类似于html那种标签语言 但是用途却大不一样,xml一般用于小型数据传输(存储数据) xml文件作用 xml语法规则 一个简单的xml文件案例 xml解析 解析思想 所谓的xml解析 也就是从xml文件提取数据 解析思想:前端的文档对…

【C++实现】RPC框架的简单实现介绍

文章目录 介绍为什么使用protobufprotobuf的service rpc 框架发布方的上层使用逻辑框架的提供方逻辑Rpc调用方框架实现客户端上层框架使用重新梳理简单聊一下RpcController 引入缓冲区队列zookeeper总结 介绍 以下博客覆盖内容: 集群和分布式概念原理; …

安科瑞智能照明系统在绿色建筑中的应用与产品选型

【摘要】:智能照明系统应用在智能建筑中不仅能营造出舒适的生活、工作环境以及现代化的管理方式而且要具有一定的节能效果。给出了智能照明和传统照明系统的比较并分析了智能照明系统的节能。 【关键字】:智能建筑;智能照明;节能…

什么样的口译是好的?交传和同传的评估标准是什么?

众所周知,交传和同传是口译的两种高级形式,难度比较大,一般应用于国际会议、商务洽谈、重大新闻发布会等领域。那么,如何做好交传和同传翻译,什么样的口译是好的,交传和同传的评估标准是什么,北…

密码学obe软件思路

匿名通信与暗网研究综述 匿名通信系统是一种建立在Internet之上综合利用数据转发、内容加密、流量混淆等多种技术隐藏通信实体关系和内容的覆盖网络.由于匿名通信主体难以被追踪定位,匿名通信网络中各类匿名滥用问题层出不穷,而其中隐藏服务机制更是被用于构建充斥着各种非法…

Integer移位算法

常用移位算法 给定值最高位1的权重给定值最低位1的权重给定值高位连续零的个数给定值低位连续零个数 给定值最高位1的权重 也就是给定值左侧。返回给定值左侧最大的2的次幂 //获取i最高位1代表的2次幂,最高位1代表的权值public static int highestOneBit(int i) …

轻量化技术 | 大面积模型秒加载、TB级数据处理能力、多平台便捷展示应用...

实景三维技术的发展日新月异,但在应用上却一直无法深入,尤其是在大场景三维模型展示与应用过程中,不可避免地会遇到占内存、渲染慢、加载卡顿、模型塌陷等情况,这是由于数据格式类型多、内存占比大、模型体量大。 对此&#xff0…

C++ STL关联式容器和无序容器(哈希容器)

文章目录 5.2 C STL关联式容器5.2.1 C STL map容器5.2.2 C STL multimap容器5.2.3 C STL set容器5.2.2 C STL multiset容器 5.3 C STL无序容器(哈希容器) 参考 5.2 C STL关联式容器 关联式容器在存储元素值的同时,会为各元素额外再配备一个值…

让你不再疑惑PDF转Excel怎么操作

你是否曾经遇到过需要编辑PDF表格的情况,但却不知道如何进行转换?不用担心,现在有一些简单的方法可以将PDF表格转换为Excel,让你轻松地编辑和修改表格。如果你还不知道PDF表格转Excel怎么转的话,那么接下来三种实用的小…