1

我有一个 C 库,其代码位于 /repos1/clib 中。我使用最新的 iOS sdk 从命令行构建它以创建 clib.a(包括模拟器的调试构建),我将其复制到 /repos2/proj 中的 iOS 项目中。

我已经使用这个设置好几年了。旧的 C 库偶尔可能需要一些调试,我很高兴 Xcode 只需进入项目外部(repos1 内)的库代码而无需进行任何设置 - 它就可以工作。但这直到几个 Xcode 版本之前。我不确定它是什么时候改变的——也许是他们从 gcc 转移到 llvm 的时候?- 因为我很少需要调试 C 代码,但有一段时间我只有在尝试从 iOS 项目调试 C 库时才会被拆解(至少包括对 C 文件名和行号的引用)。有几次我需要调试它非常不方便(我创建了一个包含 C 代码的临时项目)。

那么,知道为什么它以前有效而现在无效吗?我应该去哪里看?可能是我构建 C 库的方式,也许我使用的 gcc 中有一个标志在 llvm 中没有等效项(如果相关,我可以找到并发布我正在使用的旧构建命令)?是 Xcode 中的问题吗?有办法告诉它在哪里寻找源代码?

谢谢!

编辑:为了清楚起见,我可以将 C 库添加为 Xcode 中的源代码或子项目,但是由于超出范围的原因,这对这个特定项目没有帮助。那么,它可以像以前的 Xcode 版本一样工作吗?如果没有,知道为什么不这样做仍然很有趣。

4

2 回答 2

0

The recommended approach is to create a library project in Xcode, one for iOS (there is a template for it), then when you get that to build add that project to your app, make sure the lib is a dependency and gets linked. There are many tutorials on the web how to do this.

Then as iOS evolves and new architectures (armv7s) arrive you simply update both projects.

于 2013-04-06T12:03:50.683 回答
0

我在同样的问题上苦苦挣扎。

我尝试在库/应用程序项目中重置与符号剥离相关的所有选项,并将应用程序项目复制到与库项目相同的 truecrypt 驱动器,但它没有帮助。

就我而言,这似乎是一个应用程序项目问题。可以使用源代码在另一个应用程序项目中调试相同的库,这是一个线索。

我在应用程序项目中有多个版本的同一个库,并且只设置了目标成员来选择应该使用的成员。不确定这是否会以某种方式影响我的应用程序项目。然而,在删除所有库并将它们再次复制到应用程序项目后,我能够通过访问源代码来调试库。

于 2013-04-12T10:07:33.783 回答