You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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文件:

  1. 打开/c/Users/MY_NAME/Downloads/assimp-5.0.1/assimp-5.0.1/include/assimp/StringComparison.h
  2. 在文件最顶部(任何#include语句之前)添加:
    #define _POSIX_C_SOURCE 200809L
    // 或者 #define _GNU_SOURCE
    
  3. 保存后重新执行make

额外检查

确保你已经安装了MSYS2的基础开发工具包,执行以下命令安装(如果没装的话):

pacman -S base-devel

内容的提问来源于stack exchange,提问作者user3552351

火山引擎 最新活动