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"
)