Windows 11下LibTorch安装构建问题求助(含未解决错误)
解决LibTorch构建时的glog冲突与语法错误问题
问题3:glog ERROR宏冲突
错误提示ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h,核心原因是项目中其他代码或依赖已定义ERROR宏,与glog的缩写宏产生冲突。
解决方案:
不要仅在logging.h中添加定义,需确保该宏在所有glog头文件被包含之前生效,最可靠的方式有两种:
- 在CMakeLists.txt中全局定义:
add_definitions(-DGLOG_NO_ABBREVIATED_SEVERITIES)
- 在
example-app.cpp的最开头(所有#include语句之前)添加:
#define GLOG_NO_ABBREVIATED_SEVERITIES #include <torch/torch.h> // 其他头文件...
问题4:LibTorch依赖语法错误
错误显示大量来自vcpkg路径下的LibTorch头文件语法错误,本质是vcpkg提供的依赖与LibTorch自带依赖版本不兼容,CMake错误地优先使用了vcpkg中的头文件,而非LibTorch包内自带的依赖组件。
解决方案:
- 修改CMakeLists.txt,确保LibTorch的依赖优先级高于vcpkg,在
find_package(Torch)之前添加:
# 强制CMake优先查找LibTorch自带的依赖配置 set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON) set(CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH};${TORCH_INSTALL_PREFIX}")
- 若必须使用vcpkg,在CMake命令中明确隔离LibTorch依赖,避免vcpkg干扰:
cmake -DCMAKE_PREFIX_PATH="C:/Users/evana/Documents/MyPrograms/C++/Chess2/libtorch-win-shared-with-deps-2.2.1+cu121" -DCMAKE_TOOLCHAIN_FILE="C:/Users/evana/Documents/OtherPrograms/vcpkg/scripts/buildsystems/vcpkg.cmake" -DTorch_DIR="C:/Users/evana/Documents/MyPrograms/C++/Chess2/libtorch-win-shared-with-deps-2.2.1+cu121/libtorch/share/cmake/Torch" ..
- 清理现有build目录,重置缓存后重新构建:
rmdir /s /q build mkdir build cd build # 执行上述修改后的CMake配置命令 cmake --build . --config Release
额外提示:
- 确保使用的是
libtorch-win-shared-with-deps完整包,它自带所有必需依赖(包括glog、c10等),无需通过vcpkg重复安装这些组件。 - 避免让CMake同时引入多个来源的相同依赖,否则极易引发版本冲突和语法错误。
内容的提问来源于stack exchange,提问作者Evan Abbott
相关产品推荐
相关产品推荐

