MSYS2环境下编译Assimp 5.0.1遇strcasecmp未声明错误求助
解决MSYS2环境下编译Assimp 5.0.1时
strcasecmp未定义的错误 这个问题我之前在MSYS2环境编译老版本Assimp时也碰到过,本质原因是**strcasecmp是POSIX标准的函数,而MSYS2的GCC默认没有启用对应的宏来暴露这个函数**。下面是几种可行的解决方法:
方法一:通过CMake添加全局编译宏(推荐)
直接在CMake命令中添加编译宏定义,让编译器识别strcasecmp:
cmake CMakeLists.txt -S ./ -B ./BUILD_ASSIMP -D CMAKE_CXX_FLAGS="-D_POSIX_C_SOURCE=200809L"
或者使用GNU扩展的宏:
cmake CMakeLists.txt -S ./ -B ./BUILD_ASSIMP -D CMAKE_CXX_FLAGS="-D_GNU_SOURCE"
添加完宏定义后,重新执行make应该就能正常编译了。
方法二:修改Assimp的头文件(临时方案)
如果不想修改CMake命令,可以手动编辑StringComparison.h文件:
- 打开
/c/Users/MY_NAME/Downloads/assimp-5.0.1/assimp-5.0.1/include/assimp/StringComparison.h - 在文件最顶部(任何
#include语句之前)添加:#define _POSIX_C_SOURCE 200809L // 或者 #define _GNU_SOURCE - 保存后重新执行
make
额外检查
确保你已经安装了MSYS2的基础开发工具包,执行以下命令安装(如果没装的话):
pacman -S base-devel
内容的提问来源于stack exchange,提问作者user3552351




