LZ4库中废弃函数嵌套调用导致VS编译C4996报错问题问询
LZ4库废弃函数编译触发C4996错误的原因与解决办法
问题根源
这不是你的操作问题,属于LZ4库版本迭代时的遗留疏漏:
- v1.8.0版本首次标记
LZ4_uncompress为废弃,头文件提示改用LZ4_decompress_fast; - 后续版本中,官方又判定
LZ4_decompress_fast存在安全风险,将其也标记为废弃,推荐用LZ4_decompress_safe_partial替代; - 但库源码里
LZ4_uncompress的实现代码没同步更新,依然调用已经被二次废弃的LZ4_decompress_fast,所以Visual Studio编译时会触发C4996警告。
可行解决方式
- 替换为推荐函数:直接把代码中对
LZ4_uncompress的调用替换成LZ4_decompress_safe_partial,彻底避开废弃函数链; - 临时屏蔽警告:如果暂时不想修改业务代码,可以在Visual Studio中添加编译选项
/wd4996屏蔽C4996警告,或者在代码开头添加:#pragma warning(disable:4996) - 升级LZ4库:尝试更新到最新版本的LZ4库,新版本可能已经修复了这个废弃函数内部调用的遗留问题。
内容的提问来源于stack exchange,提问作者Zebrafish
相关产品推荐
相关产品推荐

