0

我正在尝试在一个 iOS 应用上实施 Admob 中介。在构建项目时与 InMobi 集成时出现此错误

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_IMCommonUtil", referenced from:
      objc-class-ref in libAdapterInMobi.a(GADInMobiExtras.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

请帮忙

4

3 回答 3

3

您是否没有在项目中包含 InMobi Commons 库 ( libInMobiCommons )?

InMobi iOS AdNetwork 捆绑包:(http://developer.inmobi.com/wiki/index.php?title=InMobi_SDK_3.6.0_for_iOS#Getting_Started)

IMAdDelegate.h
IMAdError.h
IMAdInterstitial.h
IMAdInterstitialDelegate.h
IMAdRequest.h
IMAdView.h
IMCommonUtil.h
libInMobiAdNetwork-3.6.0.a
libInMobiCommons-3.6.0.a
于 2012-10-15T06:14:15.253 回答
1

在库上执行 lipo -detailed_info 会告诉它为以下拱门构建 - armv7、armv7(s) 和 i386。架构 i386 cputype CPU_TYPE_I386 cpusubtype CPU_SUBTYPE_I386_ALL 偏移 68 大小 275880 对齐 2^2 (4) 架构 armv7 cputype (12) cpusubtype cpusubtype (9) 偏移 275948 大小 295872 对齐 2^2 (4) 架构 (cputype (12) cpusubtype (11)) cputype (12) cpusubtype cpusubtype (11) offset 571820 size 295792 align 2^2 (4) 所以可能只是在你的项目中链接库,你的错误就会被删除。

于 2012-10-16T06:16:19.483 回答
0

据推测,静态库不是“足够”的多架构:它可能只为 iOS 构建(在这种情况下,只有 ARMv7 或 ARMv6 和 ARMv7 架构存在于内部),或者用于 64 位 iPhone 模拟器(在这种情况下i386 未内置到库中,仅适用于 x86_64 处理器类型的代码)。你真的无能为力。在真实设备上测试应用程序(无论如何,几乎总是在设备上测试您的应用程序)。

于 2012-10-14T05:59:17.977 回答