7

我使用依赖于 zlib 的开源渲染库 (Ogre3D)。

在 XCode5 中,我注意到在为 iOS 构建时,如果 ARCHS 设置指示 64 位(arm64)架构,zlib 将不会构建。

我收到有关LSEEKreadwrite函数的“隐式函数声明”的错误。我LSEEK在 gzlib.c 中查找:

#if defined(_WIN32) && !defined(__BORLANDC__)
#  define LSEEK _lseeki64
#else
#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
#  define LSEEK lseek64
#else
#  define LSEEK lseek
#endif
#endif

我的猜测是这里有问题,但我不知道是什么。至于我也不知道read()write()

4

2 回答 2

12

尝试#include <unistd.h>在 gzguts.h 中添加一个。

于 2014-03-06T15:06:22.837 回答
2

在这种情况下,最简单的解决方案是根本不自己构建zlib,因为它已经预编译了 iOS SDK(也适用于 arm64)。

这个最新的提交也在官方的 Ogre 依赖库中修复了它。

除此之外,这个 Ogre3D 线程还有另一个选项:

使用ARCHS = ARCHS_STANDARD_INCLUDING_64_BIT,像 zlip 这样的项目失败了。当我将其更改为ARCHS_STANDARD_32_64_BIT时,他们构建好了。我发现前者评估为“armv7 armv7s arm64”,而后者目前评估为“armv7 armv7s”。所以我认为 zlip 不会为 arm64 构建。

这意味着 Ogre3D 部分是为 64 位编译的,而zlib等一些依赖项则保持 32 位。

于 2014-03-06T14:32:49.490 回答