VS2015编译eXosip2-4.1.0 osip2-4.1.0
1、获取 libeXosip2-4.1.0.tar.gz、 libosip2-4.1.0.tar.gz
下载地址为:http://www.antisip.com/download/exosip2/
2、获取c-ares-1.11.0.tar.gz
下载地址为:http://c-ares.haxx.se/
3、新建一个src目录
解压 libeXosip2-4.1.0.tar.gz、libosip2-4.1.0.tar.gz、c-ares-1.11.0.tar.gz得到libeXosip2-4.1.0、libosip2-4.1.0、c-ares-1.11.0文件夹,把libeXosip2-4.1.0、libosip2-4.1.0、c-ares-1.11.0分加改名得到eXosip、osip、c-ares三个文件夹。
4、打开解决方案
libosip2-4.1.0等默认的几个工程是VS2012的工程。
使用VS2015打开eXosip\platform\vsnet\eXosip.sln解决方案后,
会弹出[升级VC++编译器和库]的窗口。点击确定后,工程会自动升级到VS2015。
5、编译osip2:
<1>使用VS2015打开libosip2-4.1.0/platform/vsnet/osip.sln
<2>使用VS2015打开osip/platform/vsnet/osip.sln,会弹出[升级VC++编译器和库]的窗口。点击确定后,工程会自动升级到VS2015。
<3>选择《生成解决方案》进行一起编译生Debug(使用静态库)
<4>从v140/Win32/Debug文件夹中得到osip2.lib和osipparser2.lib库
<5>编译过程出现以下错误:
错误1:
error “fatal error C1189: #error: Macro definition of snprintfconflicts with Standard Library function declaration”
解决办法:
在osip2目录里打开port_condv.c 和 internal.h文件,注释掉defined(WIN32)下的 #define snprintf _snprintf
错误2:
error C2011: “timespec”:“struct”类型重定义
解决办法:
在项目属性-c/c++-预处理器-预处理器定义里增加宏 HAVE_STRUCT_TIMESPEC
警告1:
在WIN10系统中编译出现如下警告:
osip\include\osipparser2/internal.h(71):warning C4067: 预处理器指令后有意外标记 - 应输入换行符
osip\include\osip2/internal.h(163):warning C4067: 预处理器指令后有意外标记 - 应输入换行符
解决办法:
在internal.h文件中找到如下内容:
#if(_MSC_VER >= 1700) && !defined(_USING_V110_SDK71_)
#include<winapifamily.h>
#endif
在#include<winapifamily.h>后面增加宏定义如下
#defineWINAPI_FAMILY_ONE_PARTITION(PartitionSet, Partition) ((WINAPI_FAMILY &PartitionSet) == Partition)
6、编译eXosip2:
由于eXosip依赖于libcares、osip2、osipparser2这3个库。按上面的目录结构,工程不需要特别配置。
直接编译eXosip
在vsnet/v140/Win32/Debug下得到eXosip.lib、libcares.lib、osip2.lib、osipparser2.lib四个静态库。
7、编译过程出现以下错误:
错误1:
C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.
Targets(511,5): errorMSB8008:指定的平台工具集(v100)未安装或无效。请确保选择受支持的 PlatformToolset 值。
解决办法:
这个问题主要是在工程序转换的时候,c-ares项目默认为VS2012工程, 在c-ares项目点击右键-属性-配置属性-常规-平台工作集把V110改为V140。
错误2:
fatal error C1083: 无法打开包括文件: “nameser.h”: Nosuch file or directory
解决办法:
在项目属性-c/c++-预处理器-预处理器定义里去掉宏SRV_RECORD
错误3:
fatal error C1083: 无法打开包括文件: “tsc_socket_api.h”:No such file or directory
解决办法:
在项目属性-c/c++-预处理器-预处理器定义里去掉宏TSC_SUPPORT
错误4:
error “fatal error C1189: #error: Macro definition of snprintfconflicts with Standard Library function declaration”
解决办法:
在eXosip目录里打开eXosip2.h文件,注释掉defined(WIN32)下的 #define snprintf _snprintf
错误5:
error C2011: “timespec”:“struct”类型重定义
解决办法:
在项目属性-c/c++-预处理器-预处理器定义里增加宏 HAVE_STRUCT_TIMESPEC
错误6 :
找不到 eXrefer_api.c
解决方法:
在编译 libexosip2-5.0.0.tar.gz 这个版本时出现一个缺失文件的问题,后来发现时这个版本中就是缺失了“eXrefer_api.c”这个文件,而在其配置文件中添加了这个文件,导致找不到这个文件。后来在前面的版本中找到了这个文件加进去后就没问题了。
参考:
http://blog.csdn.net/dgyanyong/article/details/50818101
http://blog.csdn.net/htbsoft0556/article/details/19540333
#include <stdio.h>
#include <stdlib.h>
#include <WinSock2.h>
#include <ws2tcpip.h>
#include <eXosip2/eXosip.h>
#include <string.h>#define BUFFSIZE 1024
#define DEST_CALL "sip:172.16.2.13"
#define SOURCE_CALL "sip:172.16.5.30:5060"
#define DEST_PORT 5061 //发送subscribe数据包
int SendSubscribe()
{eXosip_event_t *je;int i = 0;osip_message_t *subscribe;char tmp[BUFFSIZE];//初始化i = eXosip_init();if (i != 0){printf("Can not initialize eXosip!\n");return -1;}else{printf("eXosip_init successfully!\n");}//绑定端口i = eXosip_listen_addr(IPPROTO_UDP, NULL, 5061, AF_INET, 0);if (i != 0){eXosip_quit();printf("eXosip_listen_addr failed!\n");}else{printf("eXosip_listen_addr sucess\n");}//subscribe,发起呼叫请求i=eXosip_subscribe_build_initial_request(&subscribe, DEST_CALL, SOURCE_CALL, NULL, "SE-INFO", 3600);if(i != 0){fprintf(stderr, "Initial INVITE failed!, %s\n", strerror(errno));}else{printf("Initial INVITE sucess!\n");}snprintf (tmp, 1024,"GET:FirmwareVer\r\n" //话机的版本"GET:MacAddress\r\n" //话机的MAC地址"GET:ConfigVer\r\n" //配置文件的版本//"SET:Telnet ip=192.168.3.108 port=5060\r\n"//"SET:Reboot\r\n");osip_message_set_body(subscribe,tmp,strlen(tmp));osip_message_set_content_type(subscribe,"application/SEM-TEXT");eXosip_lock();i=eXosip_subscribe_send_initial_request(subscribe); eXosip_unlock();while (1){je = eXosip_event_wait (0, 200); if (je == NULL) { continue;}else{switch(je->type) //可能会到来的事件类型{case EXOSIP_SUBSCRIPTION_ANSWERED: //announce a 200okprintf("收到200 OK!!\n");break;case EXOSIP_SUBSCRIPTION_NOTIFY: //announce new NOTIFY {printf("收到EXOSIP_SUBSCRIPTION_NOTIFY!\n");osip_body_t *body;osip_message_get_body (je->request, 0, &body);printf("%s\n", body->body);}break;case EXOSIP_SUBSCRIPTION_REQUESTFAILURE: // announce a request failureprintf("EXOSIP_SUBSCRIPTION_REQUESTFAILURE!\n");break;case EXOSIP_CALL_ANSWERED: //收到200 OK,表示请求已经被成功接受,用户应答printf("收到200 OK!\n");//int call_id=je->cid;//int dialog_id=je->did;printf("call_id is %d,dialog_id is %d, je_status is %s, %s\n",je->cid,je->did, je->ss_status, je->ss_reason);//回送ack应答消息//eXosip_call_build_ack(je->did,&ack);//eXosip_call_send_ack(je->did,ack);break;case EXOSIP_SUBSCRIPTION_PROCEEDING:{printf("EXOSIP_SUBSCRIPTION_PROCEEDING!\n");break;}case EXOSIP_SUBSCRIPTION_REDIRECTED:{printf("EXOSIP_SUBSCRIPTION_REDIRECTED!\n");break;}case EXOSIP_SUBSCRIPTION_SERVERFAILURE:{printf("EXOSIP_SUBSCRIPTION_SERVERFAILURE!\n");printf("call_id is %d,dialog_id is %d, je_status is %s, %s\n",je->cid,je->did, je->ss_status, je->ss_reason);break;}case EXOSIP_SUBSCRIPTION_GLOBALFAILURE:{printf("EXOSIP_SUBSCRIPTION_GLOBALFAILURE!\n");break;}case EXOSIP_IN_SUBSCRIPTION_NEW:{printf("EXOSIP_IN_SUBSCRIPTION_NEW!\n");break;}default: //收到其他应答printf("other response!\n");if (je->textinfo[0]!='/0'){printf( "(%i %i %i %i) %s", je->cid, je->sid, je->nid, je->did, je->textinfo);}break;}}}eXosip_event_free(je); //Free ressource in an eXosip event
}
VS2015编译eXosip2-4.1.0 osip2-4.1.0相关推荐
- vs2015编译linux源码,使用Visual Studio 2017(VS2017)编译OpenCC 1.0.4 (Open Chinese Convert)源代码...
摘要:本文介绍了Win7 64位环境下OpenCC(Open Chinese Convert) 1.0.4源码编译全过程,除VS2017外,VS2013以上版本也应该基本同样适用,其他版本的Windo ...
- VS2015编译MuPDF 1.13.0源码(详细)
前言 要想对PDF进行二次开发,那么MuPDF一定是首选,MuPDF 上的呈现器专为高质量的抗失真图像量身打造,它以像素级的精度高品质呈现文字和文字间的间距,从而获得最高级别的显示保真度,在设备屏幕上 ...
- 用VS2015编译Qt5.6.0,WebEngine支持XP
准备工作 1.下载icu库.openssl库 2.安装activePerl.python.git(请将git的bin目录加入path环境变量) 3.修改控制面板->区域->管理->更 ...
- VS2015编译Qt5.7.0生成支持XP的静态库
一.编译工具 1.VS2015 编译Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2).因为Update补 ...
- VS2015编译ffmpeg 3.4.2
https://blog.csdn.net/bobsweetie/article/details/50858358 https://blog.csdn.net/csdnwei/article/deta ...
- Windows+VS2015编译caffe+py-faster-rcnn
一.前期环境以及准备 1.安装python 在caffe中,python2和python3的接口都有.但frcnn中只能支持python2.7,所以千万不要装成python3.为了方便,不用自己去pi ...
- Windows下 VS2015编译boost1.62
VS2015编译boost1.62 Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有 ...
- boost.asio openssl zlib protobuf icu vs2015编译
很早以前基于boost.asio开发了服务器程序,今天需要重新准备一下编译环境,把过程记录下来做个备份. 现在的windows平台开发环境win10 + vs2015 编译protobuf 2.6.1 ...
- wdk1703+vs2015编译的诡异问题
wdk1703+vs2015编译的诡异问题 最近将wdk升级到1703(10.0.15063.0)版本,编译一个新建的minifiter项目居然出现了失败 提示错误为 WindowsDriver.co ...
- Levmar:VS2015编译Levmar及Demo示例
参考 64位 WIN 7/8 下VS2010配置CLAPCAK3.2.1和Levmar2.6 准备 下载CMake:https://cmake.org/ 下载clapack_cmake:http:// ...
最新文章
- ITK:越界像素返回常数值
- Redis 基本数据类型 :String、Hash、List、Set、ZSet
- ES语法及-IK分词器
- ZooKeeper系列(四)
- 【转】HttpCompress
- CSS盒模型与box-sizing详解
- python再计算无限循环小数的循环节
- 1038: 绝对值最大
- 步进电机开环控制的要点
- 你需掌握的CSS知识都在这了
- uniapp对接微信公众号H5微信支付、分享、小程序隐藏右上角分享胶囊
- python opencv压缩图片_OpenCV Python 缩放图片
- 期望最大化(Expectation Maximization)算法介绍
- 分享个梦塔防挂机辅助,快速升级升段刷资源的脚本
- 天融信七层虚拟服务器设置,一看就会!天融信智慧无线管理平台(ESP)安装图解...
- 【超详细】零基础自学网络安全,来收藏这一篇就够了(白嫖60G网安教程)
- 2022京东双十一全品类销售额变化情况一览:50%增长,50%下滑
- 全志uboot修改_全志固件修改工具全系列
- Ubuntu18.04安装opencv4.5.1+contrib 支持cuda加速(附带编译好的opencv4.5.1及缺失文件)
- VHDL语言入门帮助
热门文章
- python 直方图均衡化_彩色图像直方图均衡化Python
- 未来城市插画mac动态桌面壁纸
- 基于STM32通过RTC唤醒低功耗模式
- C4D快速入门教程——XPresso基本使用
- c语言error lnk 2005,error LNK2005问题,小弟实在无能为力!!!
- 【自动驾驶】Stanley(前轮反馈)实现轨迹跟踪
- java常量池存放什么_java常量池存放在哪里
- SPI通信协议学习笔记
- cad画计算机网络图,CAD迷你家装五步快速绘制平面图教程
- 2021年最好用&完全免费的图片压缩网站、软件推荐(包括GIF)