MinGW如何强制使用64位编译器替代32位(Windows pybind11场景)
错误原因
当前使用的MinGW编译器位数与已安装的Python位数不匹配,生成.vcxproj文件是因为历史CMake缓存中残留了Visual Studio生成器的配置记录。
解决步骤
- 第一步:清理CMake缓存
删除项目目录下的CMakeCache.txt文件和CMakeFiles文件夹,避免旧配置干扰后续生成过程。 - 第二步:校验MinGW位数与Python匹配
打开终端执行gcc -v,查看输出中Target字段:- 显示
x86_64-w64-mingw32为64位MinGW,对应64位Python - 显示
i686-w64-mingw32为32位MinGW,对应32位Python
若位数不匹配,更换对应位数的MinGW版本后再执行后续操作。
- 显示
- 第三步:执行CMake生成命令
确保MinGW的bin目录已加入系统环境变量PATH,执行如下命令生成Makefile:
64位环境命令:
32位环境命令:cmake . -G "MinGW Makefiles" -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++cmake . -G "MinGW Makefiles" -DCMAKE_C_COMPILER=i686-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=i686-w64-mingw32-g++ - 第四步:编译生成.pyd文件
生成Makefile后执行mingw32-make命令,编译完成后即可得到可直接导入Python使用的.pyd文件。
注意事项
- Python与MinGW的位数必须严格一致,否则会持续出现位数不匹配报错
- 每次更换编译器、生成器前,必须完全清理CMake缓存
- 执行cmake命令前可先运行
gcc --version,确认终端调用的是对应位数的MinGW编译器
内容的提问来源于stack exchange,提问作者Eric Kim
相关产品推荐
相关产品推荐

