我正在尝试在一个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)
请帮助
答案 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处理器类型的代码)。你无法对此做任何事情;在真实设备上测试应用程序(无论如何,几乎总是在设备上测试你的应用程序)。