使用CMake和Visual Studio编译OpenCV时遇'Files/NVIDIA.obj'链接错误
这个链接错误的核心原因是路径包含空格(如C:\Program Files)时,CMake生成的编译脚本未对带空格的路径添加引号,导致链接器将完整路径C:\Program Files\NVIDIA...错误截断为Files/NVIDIA.obj。以下是针对性解决步骤:
修正CMake配置路径
重新运行CMake配置时,对所有含空格的CUDA、CUDNN、TensorRT安装路径添加双引号,例如将C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8写为"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8";更彻底的方式是将这些依赖迁移到无空格路径(如C:\NVIDIA\CUDA\v11.8),从根源避免空格干扰。手动修改生成的项目文件
若已生成VS解决方案,找到报错的CUDA相关项目,打开项目属性面板:- 进入链接器->输入->附加依赖项
- 检查是否存在被截断的路径,给带空格的路径手动添加双引号
调整编译工作路径
将OpenCV源码和build目录移到无空格路径(如C:\OpenCV\src和C:\OpenCV\build),重新执行CMake配置和nmake、nmake install命令。替换环境变量为短路径
若环境变量(如CUDA_PATH)指向含空格的路径,可替换为Windows短路径格式:C:\Progra~1\NVIDIA GPU Computing Toolkit\CUDA\v11.8(Progra~1是Program Files的短路径别名)。
内容的提问来源于stack exchange,提问作者LordGalacticEmpire

