exosip osip Windows下载编译

时间:2023-02-17 19:57:25

前言

官网主页

​​​​​​http://savannah.nongnu.org/projects/exosip/​

​​下载

​​Index of /download/exosip2/ (​​antisip.com​​)​​

当前源码版本

libexosip2-5.3.0.tar.gz

libosip2-5.3.0.tar.gz

编译

修改库文件夹名称

解压上述两个压缩包得到如下的文件夹

libexosip2-5.3.0

libosip2-5.3.0

修改文件夹名称分别为exosip,osip,然后拷贝到开源库文件夹下

exosip osip Windows下载编译

原因

例如osip2.vcxproj工程属性文件中包含的源码文件路径如下:

    <ClCompile Include="..\..\..\osip\src\osip2\fsm_misc.c" />

   <ClCompile Include="..\..\..\osip\src\osip2\ict.c" />

并没有携带lib和版本号2-5.3.0

否则提示无法打开..\..\..\osip\src\osip2\fsm_misc.c等编译错误

添加工程属性文件

osip\platform\vsnet\osip2.vcxproj

osip\platform\vsnet\osipparser2.vcxproj

exosip\platform\vsnet\eXosip.vcxproj

exosip工程属性配置预处理

去掉HAVE_OPENSSL_SSL_H,TSL_SUPPORT

TSC_SUPPORT宏定义指定了通信方式tsc_socket,依赖tsc_socket_api.h等具体的实现,目前仅使用winsocket,因此不能添加到预处理器里面

HAVE_OPENSSL_SSL_H宏定义指定了通信方式进行加密,依赖OpenSSL,目前不需要,因此不能添加到预处理器里面

最后保留结果:

SRV_RECORD

_CRT_SECURE_NO_DEPRECATE

ENABLE_TRACE

WIN32

EXOSIP_EXPORTS

_WINDOWS

_USRDLL

_DEBUG

_MT

exosip添加编译依赖项

exosip依赖osip,osipparse2库

生成依赖项中选择项目依赖项

调用工程属性配置

附加包含目录

..\..\..\openlibrary\exosip\src

..\..\..\openlibrary\osip\include

..\..\..\openlibrary\exosip\include

附加库目录

..\..\..\project\studyboost\v141\Win32\Debug

附加依赖项

eXosip.lib

osip2.lib

osipparser2.lib

Dnsapi.lib

依赖关系

libosip 编译生成 libosipparser2 和 libosip2,libosip2 依赖 libosipparser2

libeXosip 编译生成 libeXosip2,依赖libosipparser2 和 libosip2


测试例子

#include "eXosip2/eX_setup.h"
#include "eXosip2.h"
#include <iostream>


int TestSIP()
{
eXosip_t eXosipContent;
int i = eXosip_init(&eXosipContent);
if (0 == i)
{
i = eXosip_listen_addr(&eXosipContent, IPPROTO_UDP, "127.0.0.1", 5061, AF_INET6, 0);
if (0 != i)
{
eXosip_quit(&eXosipContent);
return 0;
}
}
while (1)
{
eXosip_event_t* eXosipEvent = eXosip_event_wait(&eXosipContent, 0, 200);
if (NULL == eXosipEvent)
{
continue;
}

switch (eXosipEvent->type)
{
case EXOSIP_MESSAGE_NEW:
{
std::cout << "接收到一条新消息" << std::endl;
break;
}
default:
break;
}
}
return 0;
}



编译问题

1无法解析的外部符号 _DnsFree

错误 LNK2019 无法解析的外部符号 _DnsFree@8,该符号在函数 __eXosip_dnsutils_srv_lookup 中被引用

错误 LNK2019 无法解析的外部符号 _DnsQueryConfig@24,该符号在函数 _eXosip_dnsutils_naptr 中被引用

错误 LNK2019 无法解析的外部符号 _DnsQuery_UTF8@24,该符号在函数 __eXosip_dnsutils_srv_lookup 中被引用

解决方案

附加以来项添加Dnsapi.lib

2error C2011: “sockaddr”:“struct”类型重定义错误 

添加WIN32_LEAN_AND_MEAN到预处理器