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相关推荐

  1. 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 ...

  2. VS2015编译MuPDF 1.13.0源码(详细)

    前言 要想对PDF进行二次开发,那么MuPDF一定是首选,MuPDF 上的呈现器专为高质量的抗失真图像量身打造,它以像素级的精度高品质呈现文字和文字间的间距,从而获得最高级别的显示保真度,在设备屏幕上 ...

  3. 用VS2015编译Qt5.6.0,WebEngine支持XP

    准备工作 1.下载icu库.openssl库 2.安装activePerl.python.git(请将git的bin目录加入path环境变量) 3.修改控制面板->区域->管理->更 ...

  4. VS2015编译Qt5.7.0生成支持XP的静态库

    一.编译工具 1.VS2015 编译Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2).因为Update补 ...

  5. VS2015编译ffmpeg 3.4.2

    https://blog.csdn.net/bobsweetie/article/details/50858358 https://blog.csdn.net/csdnwei/article/deta ...

  6. Windows+VS2015编译caffe+py-faster-rcnn

    一.前期环境以及准备 1.安装python 在caffe中,python2和python3的接口都有.但frcnn中只能支持python2.7,所以千万不要装成python3.为了方便,不用自己去pi ...

  7. Windows下 VS2015编译boost1.62

    VS2015编译boost1.62 Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有 ...

  8. boost.asio openssl zlib protobuf icu vs2015编译

    很早以前基于boost.asio开发了服务器程序,今天需要重新准备一下编译环境,把过程记录下来做个备份. 现在的windows平台开发环境win10 + vs2015 编译protobuf 2.6.1 ...

  9. wdk1703+vs2015编译的诡异问题

    wdk1703+vs2015编译的诡异问题 最近将wdk升级到1703(10.0.15063.0)版本,编译一个新建的minifiter项目居然出现了失败 提示错误为 WindowsDriver.co ...

  10. Levmar:VS2015编译Levmar及Demo示例

    参考 64位 WIN 7/8 下VS2010配置CLAPCAK3.2.1和Levmar2.6 准备 下载CMake:https://cmake.org/ 下载clapack_cmake:http:// ...

最新文章

  1. ITK:越界像素返回常数值
  2. Redis 基本数据类型 :String、Hash、List、Set、ZSet
  3. ES语法及-IK分词器
  4. ZooKeeper系列(四)
  5. 【转】HttpCompress
  6. CSS盒模型与box-sizing详解
  7. python再计算无限循环小数的循环节
  8. 1038: 绝对值最大
  9. 步进电机开环控制的要点
  10. 你需掌握的CSS知识都在这了
  11. uniapp对接微信公众号H5微信支付、分享、小程序隐藏右上角分享胶囊
  12. python opencv压缩图片_OpenCV Python 缩放图片
  13. 期望最大化(Expectation Maximization)算法介绍
  14. 分享个梦塔防挂机辅助,快速升级升段刷资源的脚本
  15. 天融信七层虚拟服务器设置,一看就会!天融信智慧无线管理平台(ESP)安装图解...
  16. 【超详细】零基础自学网络安全,来收藏这一篇就够了(白嫖60G网安教程)
  17. 2022京东双十一全品类销售额变化情况一览:50%增长,50%下滑
  18. 全志uboot修改_全志固件修改工具全系列
  19. Ubuntu18.04安装opencv4.5.1+contrib 支持cuda加速(附带编译好的opencv4.5.1及缺失文件)
  20. VHDL语言入门帮助

热门文章

  1. python 直方图均衡化_彩色图像直方图均衡化Python
  2. 未来城市插画mac动态桌面壁纸
  3. 基于STM32通过RTC唤醒低功耗模式
  4. C4D快速入门教程——XPresso基本使用
  5. c语言error lnk 2005,error LNK2005问题,小弟实在无能为力!!!
  6. 【自动驾驶】Stanley(前轮反馈)实现轨迹跟踪
  7. java常量池存放什么_java常量池存放在哪里
  8. SPI通信协议学习笔记
  9. cad画计算机网络图,CAD迷你家装五步快速绘制平面图教程
  10. 2021年最好用&完全免费的图片压缩网站、软件推荐(包括GIF)