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)

5、undefined reference to `D3DXCreateCubeTextureFromFileExA’

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6、undefined reference to `Direct3DCreate9’

在这里插入图片描述

在这里插入图片描述

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐