VS2013编译eXosip2-4.1.0

1、代码下载
   http://www.antisip.com/download/exosip2/
       libeXosip2-4.1.0.tar.gz
       libosip2-4.1.0.tar.gz
   http://c-ares.haxx.se/
       c-ares-1.11.0.tar.gz

2、将压缩包解压缩后,代码放在同一个目录。
   也就是libosip2-4.1.0、libeXosip2-4.1.0、c-ares-1.11.0是同级别的目录。
   比如:
       src
          libosip2-4.1.0
          libeXosip2-4.1.0
          c-ares-1.11.0
   将目录改名成下面的形式
       libosip2-4.1.0->osip
       libeXosip2-4.1.0->eXosip
       c-ares-1.11.0->c-ares
   新目录结构如下:
       src
          osip
          eXosip
          c-ares

3、打开解决方案
   libosip2-4.1.0等默认的几个工程是VS2012的工程。
   使用VS2013打开eXosip\platform\vsnet\eXosip.sln解决方案后,
   会弹出[升级VC++编译器和库]的窗口。点击确定后,工程会自动升级到VS2013。

4、编译
   由于eXosip依赖于libcares、osip2、osipparser2这3个库。所以直接编译eXosip即可。

5、修改编译错误
   Win7系统可能会出现如下编译警告:
   osip\include\osipparser2/internal.h(71): warning C4067: 预处理器指令后有意外标记 - 应输入换行符
   osip\include\osip2/internal.h(163): warning C4067: 预处理器指令后有意外标记 - 应输入换行符

   修改如下:
   osip/include/osip2/internal.h和osip/include/osipparser2/internal.h
   add start和add end中间部分为添加代码

   #if (_MSC_VER >= 1700) && !defined(_USING_V110_SDK71_)
   #include <winapifamily.h>
   // add start 增加WINAPI_FAMILY_ONE_PARTITION定义
   /* Macro to determine if only one partition is enabled from a set */
   #define WINAPI_FAMILY_ONE_PARTITION(PartitionSet, Partition) ((WINAPI_FAMILY & PartitionSet) == Partition)
   // add end
   #endif

   exosip\src\eXtransport.h(44): fatal error C1083: 无法打开包括文件: “openssl/opensslv.h”: No such file or directory
   配置属性->C/C++->预处理器->预处理器定义,删除HAVE_OPENSSL_SSL_H。Debug配置和Release配置都要删除。

   ..\..\..\exosip\src\eXtl_udp.c(55): fatal error C1083: 无法打开包括文件: “tsc_socket_api.h”: No such file or directory
   配置属性->C/C++->预处理器->预处理器定义,删除TSC_SUPPORT。Debug配置和Release配置都要删除。

6、修改编译警告、错误后继续编译
   Debug版本编译会生成如下文件:
   eXosip\platform\vsnet\v120\Win32\Debug\
       eXosip.lib
       libcares.lib
       osip2.lib
       osipparser2.lib
   Release版本编译会生成如下文件:
   eXosip\platform\vsnet\v120\Win32\Release
       eXosip.lib
       libcares.lib
       osip2.lib
       osipparser2.lib


7、测试程序的编译和错误修改
   测试程序代码可以参考下面博客:
   http://www.cnblogs.com/qq1269122125/tag/eXosip2/
   这个博客使用的是linux,如果在Windows下写代码,需要自己修改一下,把linux的头文件去掉,加入Windows的头文件。
   比如
   //#include <arpa/inet.h>
   //#include <sys/types.h>
   //#include <sys/socket.h>
   #include <WinSock2.h>

   测试工程建立,代码写好后,注意头文件的目录要在[附加包含目录]中设置,
   链接器[附加依赖项]的设置:ws2_32.lib;Dnsapi.lib;osip2.lib;osipparser2.lib;libcares.lib;eXosip.lib;
   [附加库目录]也需要根据实际情况设置。

   以上内容设置完成后,开始编译,我在编译过程中遇到了如下错误:

   错误类型1:
   eXosip2-4.1版本中,eXosip_init、eXosip_listen_addr等函数
   需要一个struct eXosip_t *excontext的参数,定义一个这个类型的变量,当作函数参数即可。
   需要修改的函数较多,不一一列举,参照编译错误修改即可。

   错误类型2:
   LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount 已经在 MSVCRTD.lib(MSVCR120D.dll) 中定义
   这样类似的错误有一大堆,解决方法如下:
   配置属性->C/C++->代码生成->运行库->多线程调试 DLL (/MDd) 改为 多线程调试 (/MTd)

   错误类型3:
   error LNK2019:无法解析的外部符号_ares_getplatform,该符号在函数_get_DNS_Registry中被引用。
   解决方法:
   把ares_platform.h和ares_platform.c加入libcares工程,重新编译libcares。

   错误类型4:
   error LNK2019:无法解析的外部符号_ares_create_query,该符号在函数_ares_query中被引用。
   把ares_create_query.c加入libcares工程,重新编译libcares。

   错误类型5:
   error LNK2019:无法解析的外部符号_DnsQueryConfig@24,该符号在函数_eXosip_dnsutils_naptr中被引用。
   解决方法:
   如果附加依赖项没有Dnsapi.lib,则会有该警告,添加Dnsapi.lib后即可消除。
   DnsQueryConfig是WindowsAPI。可以查msdn。

配置属性->C/C++->预处理器->预处理器定义,删除HAVE_CARES_H。Debug配置和Release配置都要删除。
看了下代码,这个属性在Windows下应该不使用也可以。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值