gpt4 book ai didi

ios - 将使用 Clang 构建的库添加到使用 GCC 构建的 iOS 应用程序时出现链接错误

转载 作者:行者123 更新时间:2023-12-01 19:07:41 30 4
gpt4 key购买 nike

我正在尝试将 Dropbox Sync API (v1.1.2) 添加到使用 Marmalade (v6.3) 构建的 iOS 应用程序中。我收到以下链接错误:

Undefined symbols for architecture armv7:
"___udivmodsi4", referenced from:
_sqlite3BitvecSet in libDropbox.a(sqlite3.o)
_sqlite3BitvecClear in libDropbox.a(sqlite3.o)
_sqlite3BitvecTest in libDropbox.a(sqlite3.o)
ld: symbol(s) not found for architecture armv7

谷歌搜索该错误消息的相关部分会发现某个 SQLCipher 库的许多用户遇到相同的问题,并建议该问题是由用于构建该库的编译器和使用它的各种项目的不一致引起的。

由于我们项目的构建系统是由 Marmalade 工具集设置的,因此我认为更改编译器(我相信目前是 Marmalade 提供的 GCC 4.4 版本)不是一种选择。

谁能更准确地告诉我出了什么问题?这个问题还有其他解决方法吗?

最佳答案

在像 ARM 这样具有相对简单指令集的处理器上,一些更复杂的操作被映射到函数调用而不是指令序列。当您使用“正确的”编译器进行链接时,它们的实现会被引入并且它可以工作!你通常不会看到它。

显而易见的解决方案是使用 marmalade 来编译 Dropbox 库,然后它将使用兼容的编译器。

那么问题来了,我想,你是否有理由不这样做呢?当前的 Marmalade 编译器不支持 ARC。我想这将是不在 ARC 下编译的原因。

关于ios - 将使用 Clang 构建的库添加到使用 GCC 构建的 iOS 应用程序时出现链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18721140/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com