VS2022编译eXosip2 (libeXosip2-5.3.0)

VS2022编译libeXosip2-5.3.0

几年前,笔者因工作需要在vs2015上编译过libeXosip2-5.0.0( 参考原文:https://blog.csdn.net/zymill/article/details/78620689?spm=1001.2014.3001.5501 )

现在vs2022上新编译eXosip2-5.3.0,发现c-ares目录结构有了很大变化,小结细节,备需要的读者参考。Author: hybase@qq.com

源代码下载

http://www.antisip.com/download/exosip2/
https://c-ares.haxx.se/

采用的版本

c-ares-1.18.1.tar.gz
libeXosip2-5.3.0.tar.gz
libosip2-5.3.0.tar.gz

解压和修改目录名称

下载后,复制解压到相同目录(例如 d:/vs2022_build_exosip2)后,将三个模块的目录名称依次修改为
1)libeXosip2-5.3.0 -> exosip
2)libosip2-5.3.0 -> osip
3)新建目录 c-ares
复制 c-ares-1.18.1/src/lib下所有文件到 c-ares
复制 c-ares-1.18.1/src/tools 到 c-ares
复制 c-ares-1.18.1/include 到 c-ares

目录结构如下:
目录结构

vs工程配置及文件修改

首先进入exosip\platform\vsnet,打开eXosip.sln后会加载相关项目,如图所示

第一项,项目配置升级到vs2022 v143 加载对应工程

项目配置升级

第二项,增加头文件引用目录

在eXosip 和 libcares两个项目属性中, 选c/c++常规,在附加包含目录编辑添加新的引用目录:

..\..\..\c-ares\include

002
0021

第三项,添加tools文件

在libcares项目中添加 c-ares/tools中的两个文件, 同时删除libcares项目中原有的这两个文件,参考后图

ares_getopt.c
ares_getopt.h

003
0031

第四项,添加以下文件 (避免编译程序时遇到以下链接错误)

libcares.vcxproj下加入c-ares下五个文件

ares_platform.h,
ares_platform.c,
ares_create_query.c,
ares_strsplit.c,
ares_strsplit.h

004
这些文件避免编译可执行程序链接库时会出现一下错误

error LNK2019:无法解析的外部符号_ares_getplatform,该符号在函数_get_DNS_Registry中被引用。
error LNK2019:无法解析的外部符号_ares_create_query,该符号在函数_ares_query中被引用。

第五项,去掉有关宏定义

在eXosip项目属性 选c/c++ 预处理器中的预处理器定义,去掉宏HAVE_OPENSSL_SSL_H,不然在编译的时候出现

fatal  error C1083: 无法打开包括文件: “openssl/opensslv.h”: No such file or directory

005

第六项,修改个别代码

遇到下面错误时,因c-ares中头文件的命名变化,“nameser.h” -> “ares_nameser.h”

exosip\src\eXutils.c(1646,10): fatal  error C1083: 无法打开包括文件: “nameser.h”: No such file or directory

006

编译结果

007
008

工程增加相应系统库,避免链接错误

和vs2015类似,编译可执行程序时需要再链接库中增加以下这些避免出错:为了方便读者复制,带上分号

Dnsapi.lib;Iphlpapi.lib;ws2_32.lib;eXosip.lib;osip2.lib;osipparser2.lib;Qwave.lib;libcares.lib;delayimp.lib;

缺少delayimp.lib, Qwave.lib会出现 dns等报错;
例如:

  error LNK2001: 无法解析的外部符号 ___HrLoadAllImportsForDll

如图所示
009

Author

Email: hybase@qq.com QQ: 23207689 WeChat: hybase

附注:Linux的编译较为简单

只需参考 ./configure --help就按步骤完成;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值