【问题标题】:Build Assimp with mingw32使用 mingw32 构建 Assimp
【发布时间】: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


【解决方案1】:

据我所知,这个问题已经在我们当前的主人中关闭。可以试试Asset-Importer-Lib@github的最新消息吗?

【讨论】:

  • 我可以确认。我能够使用当前的 MinGW 和 CMake 版本在当前的 master 上进行构建。
猜你喜欢
  • 2021-04-15
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多