【问题标题】:Linking Static Libraries in iPhone SDK 3.0在 iPhone SDK 3.0 中链接静态库
【发布时间】:2009-07-07 22:11:17
【问题描述】:

我有一个严重依赖 OpenCV 库的 iPhone 应用程序;因此,我编译了该库的静态版本以包含在我的应用程序中。执行此操作的说明相对简单:Using OpenCV on iPhone。我遇到的唯一问题是将链接器标志 STANDARD_C_PLUS_PLUS_LIBRARY_TYPE 设置为“standard”。该应用程序在 OS 2.0 和 2.2 下编译并完美运行。

升级到 SDK 3.0 并尝试重新编译我的应用程序后,我遇到了这个链接器标志的问题。链接时出现此错误:

ld:找不到 -lstdc++-static 的库

有趣的是,在我的系统上,除了 iPhoneOS.platform/SDKs/iPhoneOS3.0.sk 之外,似乎每个 iPhoneOS 和 iPhoneSimulator SDK 下都存在“libstdc++-static”。以下是搜索结果:

$ locate libstdc++-static
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libstdc++-static.a
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.1.sdk/usr/lib/libstdc++-static.a
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk/usr/lib/libstdc++-static.a
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/usr/lib/libstdc++-static.a
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.0.sdk/usr/lib/libstdc++-static.a
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.1.sdk/usr/lib/libstdc++-static.a
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.1.sdk/usr/lib/libstdc++-static.a
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.2.sdk/usr/lib/libstdc++-static.a
/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/usr/lib/libstdc++-static.a
/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/libstdc++-static.a
/Developer/SDKs/MacOSX10.5.sdk/usr/lib/libstdc++-static.a
/usr/lib/libstdc++-static.a

我很困惑,无法在 Google 或 iPhone 开发者论坛上找到任何答案。如果有人能在这里阐明一下,我将不胜感激。

谢谢!

【问题讨论】:

  • OS 3.x 中的 libstdc++ 是什么版本?

标签: iphone cocoa-touch xcode


【解决方案1】:

只是猜测 - 尝试将其中一个目录添加到构建属性中的“库搜索路径”选项?

【讨论】:

  • 这成功了!谢谢!我试图从较旧的 SDK 复制文件,但这不起作用(尽管我不确定是否需要执行与 ldconfig 等效的操作来重新扫描该目录,所以我打算重新启动)
  • 太棒了!我首先开始考虑 LD_LIBRARY_PATH,然后认为它可能在属性中。
【解决方案2】:

这真是令人费解,我唯一能想到的就是/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk 不在您的图书馆搜索路径中,但这不太可能。

【讨论】:

  • 我试图编译 iPhoneOS,而不是模拟器。它需要对两者都有效。
  • 你说得对,那只是从我身边溜走,那么iphone的图书馆在哪里?它没有出现在您的列表中......
  • 对,这就是问题所在;) 似乎 Apple 在 SDK 3.0 中忽略了它——可能只是一个错误。事实证明,2.2 版本的库在 3.0 中运行良好。
猜你喜欢
  • 2011-02-25
  • 1970-01-01
  • 2010-10-12
  • 2017-07-28
  • 1970-01-01
  • 2010-11-11
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多