与 libOmnitureAppMeasurement-iPhoneSimulator.a 链接的 iOS 未定义符号错误

Posted

技术标签:

【中文标题】与 libOmnitureAppMeasurement-iPhoneSimulator.a 链接的 iOS 未定义符号错误【英文标题】:iOS undefined symbol errors linking with libOmnitureAppMeasurement-iPhoneSimulator.a 【发布时间】:2014-03-05 23:22:19 【问题描述】:

我正在使用 Omniture App Measurement 库将应用使用跟踪构建到 ios iPad 应用(iOS 6.1 和更高版本)中。

由于设备和模拟器有单独的库,我使用模拟器的库:libOmnitureAppMeasurement-iPhoneSimulator.a

我已经下载并解压了库和标题到文件夹中 我项目中的 iPhoneAppMeasurement(此文件夹包含文件 libOmnitureAppMeasurement-iPhoneSimulator.a 和 OMAppMeasurement.h 已正确添加到项目中)

我确保在我的库中正确指向该库 在构建设置下搜索路径。

我在代码中添加了 Omniture SDK 设置和一些测试调用。

当我构建时,我得到“Pointer-to-literal-objc-class-name”类型的未定义符号错误...

Undefined symbols for architecture i386:
  ".objc_class_name_NSArray", referenced from:
      pointer-to-literal-objc-class-name in libOmnitureAppMeasurement-iPhoneSimulator.a(OMAppMeasurement.o)
  ".objc_class_name_NSBundle", referenced from:
      pointer-to-literal-objc-class-name in libOmnitureAppMeasurement-iPhoneSimulator.a(OMAppMeasurement.o)
  ".objc_class_name_NSDate", referenced from:
      pointer-to-literal-objc-class-name in libOmnitureAppMeasurement-iPhoneSimulator.a(OMAppMeasurement.o)

... etc ...

  ".objc_class_name_UIScreen", referenced from:
      pointer-to-literal-objc-class-name in libOmnitureAppMeasurement-iPhoneSimulator.a(OMAppMeasurement.o)
  "_OBJC_CLASS_$_OMAppMeasurement", referenced from:
      objc-class-ref in OmnitureEvent.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我为 iPad 6.1 和 iPad 7.0 模拟器获得了这些。我该如何解决这个问题?

更新: 根据反馈和其他文章,我采取了以下步骤...

- I added libstdc++ under Apple LLVM 5.0 -Language C++ settings
- I changed Other Linker flags under Build Settings->Linking to use -libstdc++ 
  (instead of lstdc++)
- I ensured libstdc++.dylib was included under Build Phases 

Now I get "Apple Mach-O Linker Error" ld: library not found for -libstdc++

有没有办法可以通过命令行查找来检查 libstdc++.dylib 是否存在,然后在我的项目中设置/包含它?这可能不是一个理想的方法,但我需要解决这个问题!

【问题讨论】:

Xcode 似乎在抱怨 Foundation 类...这可能是一个显而易见的问题,但 Foundation 框架是否正确链接到您的项目? 其实我忘了添加其余的行。是的,在我添加 Omniture 调用和库之前,代码构建和运行都很好......在错误堆栈的顶部(底部)是 Omniture 类(添加到上面的跟踪中) 您是否尝试将libOmnitureAppMeasurement-iPhoneSimulator.a 的路径添加到项目的“其他链接器标志”设置中? (也称为OTHER_LDFLAGS)。我了解到您为标题搜索路径做了必要的步骤,但您可能错过了这一步骤? 另一件事:你的库是为什么 iOS SDK 构建的?它也可能是接下来要看的东西:库和您的项目之间的不同基础 SDK... 专为 iOS 6 和 iOS 7 构建。感谢有关其他链接器标志的建议:当其他链接器标志设置为 -lstdc++ 时,我收到上述错误。当我将其他链接器标志设置为 -libstdc++ 时,我只收到一个错误“找不到 libstdc++ 的库” 【参考方案1】:

发现Adobe Analytics API已经大修,新的API是AdobeMobileLibrary-4.0.2-iOS.zip

在: https://developer.omniture.com/en_US/gallery/app-measurement-for-ios

用法是一种不同的风格,遵循它构建和运行的文档就可以了。 看来 libOmnitureAppMeasurement.... 已被弃用。

【讨论】:

以上是关于与 libOmnitureAppMeasurement-iPhoneSimulator.a 链接的 iOS 未定义符号错误的主要内容,如果未能解决你的问题,请参考以下文章

=与==&与&&| 与 || 的区别

与 0 进行比较与与某个值进行比较是不是更快?

三.工具与市场-债券与债务股票与公司

RESTfulREST 与 RESTful 理解与实践

RESTfulREST 与 RESTful 理解与实践

RESTfulREST 与 RESTful 理解与实践