mingw 编译 assimp v6.0.2 解决编译报错
mingw 编译 assimp v6.0.2
理论上看这个就能满足:在Windows下使用CMake+MinGW64编译Assimp库
环境变量问题
i386 architecture of input file `CMakeFiles\assimp.dir/objects.a(assimp.rc.obj)’ is incompatible with i386:x86-64 output collect2.exe: error: ld returned 1 exit status
1、 编译报错
assimp\code\AssetLib\X3D\X3DGeoHelper.cpp:
In static member function ‘static void Assimp::X3DGeoHelper::coordIdx_str2lines_arr(const std::vector&, std::vector&)’:
assimp\code\AssetLib\X3D\X3DGeoHelper.cpp:194:20:
error: array subscript -1 is outside array bounds of ‘int [2305843009213693951]’ [-Werror=array-bounds=]
194 | if (f_data.back() != (-1)) {
| ~~~~~~~~~~~^~
修改 assimp\code\AssetLib\X3D\X3DGeoHelper.cpp:194:20
2、cmake_rc_compiler没修改成功
原:
改为和指定的g++.exe 同目录下的windres.exe
注意:如果configure 后修改cmake_rc_compiler没修改成功 或者 其他路径改变(CMAKE_CXX_COMPILER、CMAKE_C_COMPILER)不是指定的g++.exe,需要左上角File->Delete Cache,退出重启软件,部分机器需要重启(特别是有多个MingW/g++必须重启)
3、#pragma warning
指令时产生报错
使用 mingw64/bin/g++.exe 一般不会出现此问题
使用 mingw64/bin/x86_64-w64-mingw32-g++.exe 目前的确会出现此问题
取消勾选ASSIMP_WARNINGS_AS_ERROR
4、cc1.exe: fatal error
cc1.exe: fatal error: Files: No such file or directory
compilation terminated.
安装路径是中文/ 上级文件夹名称有空格(默认Microsoft DirectX SDK (June 2010)有空格没问题 系统会获取短路径名MICROS~1)