VS2017 编译Windows下可用的librtmp 库

librtmp 是开源项目rtmpdump的一个子模块,官网:http://rtmpdump.mplayerhq.hu/,librtmp库封装了rtmp协议,可以用于rtmp推流/拉流,编译rtmpdump 需要用到openssl,zlib第三方库,下面分步骤介绍。

1、获取源码

 可以直接从官网页面的git库获取,也可以在http://rtmpdump.mplayerhq.hu/download/ 下载,选择最新的rtmpdump-2.3.tgz,下载并解压。带有windows的是已经编译好的,包里面有rtmpdump.exe等,可以直接使用。

 

2、建立工程,配置环境

VS2017 新建一个Dll工程

VS2017 编译Windows下可用的librtmp 库_第1张图片

去掉预编译头

VS2017 编译Windows下可用的librtmp 库_第2张图片

 工程建立完成后,移除dllmain.cpp,将librtmp目录下的所有文件添加到工程下(编译库只需要librtmp目录),在项目路径下添加include,lib目录,设置好包含目录和库目录。

 

 添加好文件后,在项目属性->C/C++->预处理器添加以下定义,

_CRT_SECURE_NO_WARNINGS
_WINSOCK_DEPRECATED_NO_WARNINGS
ZLIB_WINAPI

 项目属性->链接器->输入->附加依赖项添加以下依赖性。

libeay32.lib
ssleay32.lib
zlibwapi.lib
ws2_32.lib
winmm.lib

 

3、添加第三方库

   下载zlib, http://www.zlib.net/zlib-1.2.11.tar.gz,解压进入contrib\vstudio\vs14,双击zlibvc.sln 打开进行编译,编译完成后,将

   生成的lzlibwapi.lib文件拷贝到工程路径下的lib目录,头文件zconf.hzlib.h,放在include目录。

 

   下载编译好的openssl:https://slproweb.com/products/Win32OpenSSL.html,这里我用的是别人编译好的openssl,openssl编译也是一个坑。我选的是OpenSSL v1.0.2u,高版本的OpenSSL没有libeay32.libssleay32.lib,名字已经发生改变! 安装完成后拷贝openssl的头文件,dll和lib文件到项目工程下。

 

4、解决编译相关问题

 报错大概如下

VS2017 编译Windows下可用的librtmp 库_第3张图片

修改点:

1、 rtmp.c strdup 386行处 改为_strdup

2、strcasecmp报错,在rtmp_sys.h 添加以下宏定义,用_stricmp代替strcasecmp

#define strcasecmp _stricmp
#define strncasecmp  _strnicmp

3、netstackdump、netstackdump_read报错是因为没有声明该变量,可以直接Release,也可以在合适的地方声明或者注释掉相关代码。

 

4、重新编译,完成。

参考链接:https://blog.csdn.net/KayChanGEEK/article/details/103702359

 

你可能感兴趣的:(Rtmp)