如何为 iOS 构建 DLIB

Posted

技术标签:

【中文标题】如何为 iOS 构建 DLIB【英文标题】:how to build DLIB for iOS 【发布时间】:2016-04-08 01:43:23 【问题描述】:

我正在尝试为 ios 项目构建 DLIB。运行cmake 会产生libdlib.a.o 文件的加载。

当我将库添加到 Xcode 项目时,我收到警告说该库尚未为 arm64 构建。

我的问题分为两部分:

    (我尝试了 cmake **path_to_source** -DCMAKE_OSX_ARCHITECTURE="arm64",但它导致了大量错误,例如 unknown type name '__uint32_t'; did you mean '__uint128_t')? 运行 cmake 时生成的所有 .o 文件的目的是什么?我需要将它们包含在 Xcode 项目中吗?

【问题讨论】:

对象文件 (*.o) 只是构建的副产品。由此产生的libdlib.a 是您可能想要使用的静态库。你的 Xcode 版本是多少? 我使用的是最新版本 7.2 我的源是 linux/OSX,所以我不确定是否可以为 iOS 构建? 是的,就是this is the website。示例文件夹中有大量生成文件。 This is the compilation instructions 谢谢@ruslo,我会去看看。 【参考方案1】:

Rob Sanders 和 mylogon 已经展示了如何为 ios 构建 dlib,这里是如何使用它:

    将 libdlib.a 添加到项目中,并将路径添加到库搜索路径 将所有源添加到包含目录(不要添加到项目中),并将路径添加到标题搜索路径。 添加包含 blas 符号的加速框架。

    从构建设置中添加预处理器宏,“自定义编译器标志”/“其他 c 标志”。这些宏确保头文件与库匹配。

    -DDLIB_JPEG_SUPPORT
    -DDLIB_NO_GUI_SUPPORT
    -DNDEBUG
    -DDLIB_USE_BLAS
    -DDLIB_USE_LAPACK
    

【讨论】:

【参考方案2】:

为了补充 RASS 的回答,我附上了屏幕截图,展示了如何在 iOS 和 OSX 库之间进行更改

打开项目后,

    从项目导航器中选择项目文件 从底部一直选择 dlib 目标 选择“构建设置” 展开“基础 SDK”下拉菜单

    选择 iOS 或 macOS (OSX)

我希望这可以帮助一些人! GL

【讨论】:

【参考方案3】:

我终于想通了:

要求

X11(在 Mac 上,您只需打开 X11 应用程序,如果未安装 X11,它将带您下载)。 Xcode cmake(你可以使用自制)

步骤

在终端中将 lib-xx.xx/examples 设为您的根目录

运行:

mkdir build

cd build

cmake -G Xcode ..

cmake --build . --config Release

这将创建一个名为 dlib_build 的文件夹,您可以在其中找到编译库的 Xcode 项目。在该 Xcode 项目的构建设置中,您可以为您喜欢的任何 Xcode 支持的操作系统设置构建架构和 SDK!

编辑:

您必须包含许多自定义编译器标志和 3rd 方库才能使 dlib 在项目中工作。查看examples.xcproject 构建设置。

【讨论】:

我完全按照你说的做了,但它给了我一个仅在 Mac(OSX) 上兼容的 xCode 项目。我错过了什么吗? 是的,您所要做的就是进入构建设置并更改支持的平台。 @RASS 嗨!我还尝试使用 dlib 库为 iOS 构建我的 XCode 应用程序,但由于架构类型(例如ld: building for iOS simulator, but linking against dylib built for OSX, file '/opt/X11/lib/libICE.dylib' for architecture x86_64),我遇到了很多问题。您是否在 dlib 构建阶段或 XCode 应用构建阶段使用了一些架构标志? @don-prog 您可以在 Xcode 构建设置中的 dlib 构建阶段更改活动架构。默认设置为 OS X,但您可以将其更改为 iOS 或模拟器。 @RASS 你用 iOS 工具链为 iOS 构建 dlib 了吗?我问这个是因为我有some problems with this。如果你能给我一些关于 iOS 的 dlib 构建阶段的特别建议,那将是非常好的。也许我什至不需要使用 iOS 工具链或其他东西?

以上是关于如何为 iOS 构建 DLIB的主要内容,如果未能解决你的问题,请参考以下文章

如何为ios构建skia

如何为通用 ios 设备构建 Webrtc ios?

如何在 linux 中离线安装 dlib?

如何为使用 Xamarin 构建的 iOS 应用启用堆栈粉碎保护?

如何为 python 安装 face_recognition 模块

Facebook iOS SDK - 如何为 Xcode 4.3 构建静态库?