使用CMake+vcpkg构建C项目调用ICU时缺失icuucd75.dll的问题
解决方案
1. 确认vcpkg安装的ICU版本与构建类型匹配
带d后缀的icuucd75.dll是ICU的Debug版本动态库,你手里的icuuc.dll是Release版本。问题大概率出在:当前CMake运行的是Debug构建,但vcpkg仅安装了Release版ICU,或是CMake配置时错误关联了Debug库。
- 检查vcpkg已安装包:运行
vcpkg list,查看ICU条目是否带有debug标识——比如icu:x64-windows是Release版,icu:x64-windows-debug是Debug版。如果未安装Debug版,执行vcpkg install icu:x64-windows --debug补装。
2. 修正CMake中的ICU链接配置
使用ICU提供的导入目标,让CMake自动根据构建类型匹配对应库文件:
find_package(ICU REQUIRED COMPONENTS uc io) target_link_libraries(你的项目目标名 PRIVATE ICU::uc ICU::io)
ICU::uc和ICU::io会自动处理Debug/Release模式下的库文件及依赖DLL,无需手动指定路径。
3. 检查vcpkg的triplet配置
如果项目使用了自定义triplet,确认triplet文件是否开启Debug支持。比如x64-windows.cmake中若写有:
set(VCPKG_BUILD_TYPE release)
将其修改为:
set(VCPKG_BUILD_TYPE "") # 同时构建Release和Debug版本
修改完成后重新安装ICU包。
4. 手动复制Debug DLL到输出目录
若上述方法无效,可直接从vcpkg的Debug目录复制DLL到项目输出文件夹:
- vcpkg的Debug DLL路径一般为
vcpkg_installed\x64-windows\debug\bin,找到icuucd75.dll、icuin75.dll等Debug版本DLL,复制到项目的Debug输出目录即可。
内容的提问来源于stack exchange,提问作者Frithurik Grint
相关产品推荐
相关产品推荐

