架构i386 InMobi的未定义符号

时间:2012-10-14 05:46:04

标签: iphone ios objective-c admob inmobi

我正在尝试在一个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)

请帮助

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

在库上做一个lipo -detailed_info告诉它构建以下的archs - 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)     抵消571820     大小295792     对齐2 ^ 2(4) 因此,可能只是链接项目中的库,您的错误将被删除。

答案 2 :(得分:0)

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