欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Windows10系统,用VS2010编译libtrmp静态库

程序员文章站 2022-07-14 20:31:31
...

在Windows10下,用VS2010编译libtrmp静态库

第一步:准备openssl的库文件

编译高版本编译低版本,方式不同,注意区分。我测试,用低版本的方式,去编译高版本,没有结果。

第二步:准备zlib的库文件

第三步:开始编译TRMP

1. 下载rtmp 源码:http://rtmpdump.mplayerhq.hu/download/

Windows10系统,用VS2010编译libtrmp静态库

根据源码包的时间,可以推断,openssl的库,应该是比较旧的库。

2. 新建VS2010win32控制台项目静态库不需要预编译

3. 将rtmpdump-2.3 解压,拿出其中的librtmp文件夹,放入项目中,如下图所示:

Windows10系统,用VS2010编译libtrmp静态库

5. include中,包含的是openssl的头文件,以及zlib的头文件,如下所示:

Windows10系统,用VS2010编译libtrmp静态库

6. lib 中,包含的是编译好的静态库,目前是32位release的静态库文件

Windows10系统,用VS2010编译libtrmp静态库

7. 将libtrmp的头文件,和源文件,分别加载进项目中

Windows10系统,用VS2010编译libtrmp静态库

8. 更改属性

(1)个人需要这个字符集,如果你需要,可以不设置。

Windows10系统,用VS2010编译libtrmp静态库 

(2)包含目录,采用相对路径,方便移植。

Windows10系统,用VS2010编译libtrmp静态库

(3)输入:_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS

Windows10系统,用VS2010编译libtrmp静态库

(4)添加lib文件中的库名称。libeary32.lib;ssleay32.lib;zlibstat.lib;

Windows10系统,用VS2010编译libtrmp静态库

至此设置完成。

9. 右键,生成项目。出现如下问题,

Windows10系统,用VS2010编译libtrmp静态库

解决方案如下:添加一个下划线。

Windows10系统,用VS2010编译libtrmp静态库

10. 刚开始的时候,我用的是openssl-1.1.1d的版本,结果出现如下错误,各种找不到结构体,结构体未定义。后来发现,openssl两个版本,编译之后,库名称都不一样。

高版本的动态库是这样的: Windows10系统,用VS2010编译libtrmp静态库 +   Windows10系统,用VS2010编译libtrmp静态库

低版本的静态库是这样的:Windows10系统,用VS2010编译libtrmp静态库

1>amf.c
1>d:\project3\libtrmpwindows\libtrmpwindows\librtmp\rtmp_sys.h(43): warning C4005: “EWOULDBLOCK”: 宏重定义
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\ucrt\errno.h(125): note: 参见“EWOULDBLOCK”的前一个定义
1>hashswf.c
1>d:\project3\libtrmpwindows\libtrmpwindows\librtmp\rtmp_sys.h(43): warning C4005: “EWOULDBLOCK”: 宏重定义
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\ucrt\errno.h(125): note: 参见“EWOULDBLOCK”的前一个定义
1>d:\project3\libtrmpwindows\libtrmpwindows\librtmp\hashswf.c(98): warning C4013: “strncasecmp”未定义;假设外部返回 int
1>d:\project3\libtrmpwindows\libtrmpwindows\librtmp\hashswf.c(292): error C2079: “ctx”使用未定义的 struct“hmac_ctx_st”
1>d:\project3\libtrmpwindows\libtrmpwindows\librtmp\hashswf.c(314): warning C4133: “函数”: 从“int *”到“HMAC_CTX *”的类型不兼容
1>d:\project3\libtrmpwindows\libtrmpwindows\librtmp\hashswf.c(332): warning C4133: “函数”: 从“int *”到“HMAC_CTX *”的类型不兼容
1>d:\project3\libtrmpwindows\libtrmpwindows\librtmp\hashswf.c(339): warning C4133: “函数”: 从“int *”到“HMAC_CTX *”的类型不兼容
1>d:\project3\libtrmpwindows\libtrmpwindows\librtmp\hashswf.c(585): warning C4013: “HMAC_CTX_init”未定义;假设外部返回 int
1>d:\project3\libtrmpwindows\libtrmpwindows\librtmp\hashswf.c(585): warning C4133: “函数”: 从“int *”到“HMAC_CTX *”的类型不兼容
1>d:\project3\libtrmpwindows\libtrmpwindows\librtmp\hashswf.c(640): warning C4133: “函数”: 从“int *”到“HMAC_CTX *”的类型不兼容
1>d:\project3\libtrmpwindows\libtrmpwindows\librtmp\hashswf.c(651): warning C4013: “HMAC_CTX_cleanup”未定义;假设外部返回 int
1>log.c
1>d:\project3\libtrmpwindows\libtrmpwindows\librtmp\rtmp_sys.h(43): warning C4005: “EWOULDBLOCK”: 宏重定义
1>c:\program files (x86)\windows kits\10\include\10.0.17763.0\ucrt\errno.h(125): note: 参见“EWOULDBLOCK”的前一个定义
1>正在生成代码...
1>已完成生成项目“libtrmpWindows.vcxproj”的操作 - 失败。
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========

 

相关标签: 音视频开发