1、下载最新的rtmpdump源码,下载路径:http://git.ffmpeg.org/rtmpdump
PS:当前最新版本为v2.4,rtmpdump-c5f04a5.tar.gz
2、新建VS空项目,添加解压后的librtmp目录下所有 *.c *.h 文件
3、项目 =》属性 =》常规 ,配置项目的配置类型,选择动态库(.dll)
4、项目 =》属性 =》C/C++ =》预处理器 ,配置如下3项预定义宏:NO_CRYPTO;CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS
PS:NO_CRYPTO不加密宏,故无须编译链接openssl
5、项目 =》属性 =》连接器 =》输入 ,t添加附加依赖项:ws2_32.lib
6、修改rtmp_sys.h和rtmp.c文件,如下图所示
7、编译,即可生成librtmp.dll,但是没有生成librtmp.lib
PS:由于windows在动态链接的时候,必须从dll文件对应的lib文件里面寻找可链接程序的标志符,因此当你编译生成一个动态库的时候,必须生成相应的lib文件。
8、使用 _declspec(dllexport)与_declspec(dllimport),产生librtmp.lib
__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法。
PS:__declspec(dllimport)是为了更好的处理类中的静态成员变量的,如果没有静态成员变量,那么这个__declspec(dllimport)无所谓
9、使用vs生成 ibrtmp.dll 时,同时产生librtmp.lib (此方法对于extern的全局变量失效,请用上述8来解决)
在工程上右键 -> 添加 -> 新建项 -> 选"模块定义文件(.def)" -> 随便输入个名字(例如:librtmp.def) -> 添加;
手动编辑librtmp.def 文件,如下图:
网友评论