Windows10系统,用VS2010编译libtrmp静态库
程序员文章站
2022-07-14 20:31:31
...
在Windows10下,用VS2010编译libtrmp静态库
第一步:准备openssl的库文件
编译高版本, 编译低版本,方式不同,注意区分。我测试,用低版本的方式,去编译高版本,没有结果。
第二步:准备zlib的库文件
第三步:开始编译TRMP
1. 下载rtmp 源码:http://rtmpdump.mplayerhq.hu/download/
根据源码包的时间,可以推断,openssl的库,应该是比较旧的库。
2. 新建VS2010win32控制台项目,静态库,不需要预编译。
3. 将rtmpdump-2.3 解压,拿出其中的librtmp文件夹,放入项目中,如下图所示:
5. include中,包含的是openssl的头文件,以及zlib的头文件,如下所示:
6. lib 中,包含的是编译好的静态库,目前是32位release的静态库文件
7. 将libtrmp的头文件,和源文件,分别加载进项目中
8. 更改属性
(1)个人需要这个字符集,如果你需要,可以不设置。
(2)包含目录,采用相对路径,方便移植。
(3)输入:_CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS
(4)添加lib文件中的库名称。libeary32.lib;ssleay32.lib;zlibstat.lib;
至此设置完成。
9. 右键,生成项目。出现如下问题,
解决方案如下:添加一个下划线。
10. 刚开始的时候,我用的是openssl-1.1.1d的版本,结果出现如下错误,各种找不到结构体,结构体未定义。后来发现,openssl两个版本,编译之后,库名称都不一样。
高版本的动态库是这样的: +
低版本的静态库是这样的:
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 个 ==========