Windows下使用MinGW安装Libtorch时CMake构建g++.exe报错是什么原因?
故障原因
你遇到的编译错误核心是官方预编译的Libtorch默认仅适配MSVC编译器,其自带的CMake配置会自动注入MSVC专属的编译参数:报错里出现的/EHsc、/wd4267、/bigobj等斜杠开头的参数都是Visual Studio编译器的专属格式,MinGW使用的GCC/G++完全不识别这类参数,因此会抛出参数不存在的错误。
解决步骤
- 首先删除之前build目录下的所有缓存文件,避免旧配置干扰后续操作
- 打开你的项目
CMakeLists.txt,在find_package(Torch REQUIRED)行之前添加以下代码,强制清空Torch自带的MSVC专属编译参数:
set(TORCH_CXX_FLAGS "") # 额外添加MinGW兼容的预处理定义,避免后续接口报错 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNOMINMAX -D_WIN32_WINNT=0x0A00")
- 重新执行cmake配置命令,建议额外指定C++标准版本、关闭不需要的CUDA配置减少兼容问题:
cmake -G "MinGW Makefiles" -DCMAKE_PREFIX_PATH=C:\...\libtorch -DCMAKE_CXX_STANDARD=17 -DTORCH_CUDA_ARCH_LIST=Off .. - 配置完成后重新执行
cmake --build . --config Release即可正常编译
额外注意事项
如果修改配置后仍然出现链接阶段的错误,说明你下载的是官方MSVC版本的Libtorch,预编译的库文件本身和MinGW不兼容,你需要自行使用MinGW从Libtorch源码编译生成对应版本的库文件后再使用。
内容的提问来源于stack exchange,提问作者AAM
相关产品推荐
相关产品推荐

