【发布时间】:2021-01-09 12:22:04
【问题描述】:
您好,我尝试使用 mingw32 编译 Assimp。
但是在编译过程中出现了多个错误。
第一个是:
C:\Users\MY_NAME\Downloads\assimp-5.0.1\assimp-5.0.1\code\SMD\SMDLoader.cpp:579:12: error: 'strtok_s' was not declared in this scope; did you mean 'strtok_r'?
我找到了解决这个问题的方法,我更改了源代码并且它工作了,但我没有找到第二个问题的解决方案。 第二个错误是:
c:\users\MY_NAME\downloads\assimp-5.0.1\assimp-5.0.1\contrib\zip\src\zip.h:30:15: error: conflicting declaration 'typedef long int ssize_t'
30 | typedef long ssize_t; /* byte count or error */
这里是 zip.h 的第 30 行:
typedef long ssize_t; /* byte count or error */
为了更清楚,我决定向您展示一段代码。 这是 zip.h 中第 27 到 31 行的代码块
#ifdef _WIN64
typedef long long ssize_t; /* byte count or error */
#else
typedef long ssize_t; /* byte count or error *
#endif
我正在使用 mingw32 和 gcc (9.2.0)
有人可以解释构建失败的原因吗?
【问题讨论】:
-
你使用什么 MinGW 发行版,你是如何构建 assimp 的?如果我是你,我会安装MSYS2,你可以从中安装预构建的 assimp(作为奖励,最新的 GCC)。总的来说,我发现它比大多数其他 MinGW 发行版更擅长构建库。
-
我使用 Mingw32 和 gcc(9.2.0) (MinGW.org GCC Build-2) 首先我用 cmake 配置了 Assimp:-> cmake -G "MinGW Makefiles" CMakelists.txt -DASSIMP_BUILD_ASSIMP_TOOLS=配置后关闭 -S ./ -B ./BUILD_ASSIMP 我更改为 BUILD_ASSIMP 并使用 mingw32-make 构建 Assimp。
-
我建议切换到 MSYS2。 mingw.org 的 MinGW 版本在某些方面较差(例如,标准库中没有多线程支持,我上次检查过),而且过时(9.2 与 MSYS2 中的 10.2 相比)。 MSYS2 将允许您下载预构建的 Assimp。即使您喜欢手动构建它,MSYS2 也可能比您的 MinGW 版本更好。
-
我从 www.mingw.org 获得我的发行版
-
是的,注意到您对评论的修改。
标签: c++ mingw32 building assimp