vs2022 win 编译crc32c 报错问题解决

3 篇文章 0 订阅
文章描述了在编译CRC32C项目时遇到的LNK1181错误,原因是cmakelists.txt默认生成动态库。解决方法是将cmake配置改为生成静态库,具体涉及修改add_library指令。
摘要由CSDN通过智能技术生成

1 问题

严重性 代码 说明 项目 项目级别 路径 文件 行 列 源 禁止显示状态 详细信息 错误 LNK1181 无法打开输入文件“Release\crc32c.lib” crc32c_capi_tests 4 F:\git\crc32c\build F:\git\crc32c\build\LINK 1 1 生成 错误 LNK1181 无法打开输入文件“Release\crc32c.lib” crc32c_tests 4 F:\git\crc32c\build F:\git\crc32c\build\LINK 1 1 生成 错误 LNK1181 无法打开输入文件“Release\crc32c.lib” crc32c_bench 4 F:\git\crc32c\build F:\git\crc32c\build\LINK 1 1 生成

2 原因

源码cmakelists.txt 默认生成.dll动态库; 

3 解决办法

改cmakelists.txt 让其生成静态库 .lib

源代码 第269行

add_library(crc32c "" 

--> 改为

add_library(crc32c STATIC ""

add_library(crc32c STATIC ""
  # TODO(pwnall): Move the TARGET_OBJECTS generator expressions to the PRIVATE
  # section of target_sources when cmake_minimum_required becomes 3.9 or above.
  $<TARGET_OBJECTS:crc32c_arm64>
  $<TARGET_OBJECTS:crc32c_sse42>
)

4 ps

4.1 add_library(crc32c "" )

默认.dll 动态库

4.2 add_library(crc32c_sse42 OBJECT "")

不会生成实际的库文件,而是生成一组目标文件,可以在其他目标(例如可执行文件或其他库)中使用这些目标文件。

4.3 第三个参数是 ""  要用 target_sources配合设置

target_sources(crc32c
  PRIVATE

  "src/crc32c.cc"

)

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值