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

参考:

http://blog.csdn.net/dgyanyong/article/details/50818101

http://blog.csdn.net/htbsoft0556/article/details/19540333

等等


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值