当试图在Kobold2d项目中使用SmartfoxServer-framework时,我们得到了以下错误:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_CCAsyncObject", referenced from:
objc-class-ref in libcocos2d-extensions-ios.a(CCTextureCache+CCBigImageExtensions.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 发生这种情况的原因是,我们必须包含-ObjC链接器标志才能加载类别,这些类别是在SmartfoxServer框架中定义的。我已经了解到需要强制链接包含类别here的静态库,但SmartFoxServer不是静态库。
有没有办法在不使用-ObjC链接器标志的情况下强制加载框架,使其包含所有类别?或者,有没有一种方便的方法将框架转换为静态库?任何帮助都是非常感谢的!
发布于 2012-07-20 20:06:07
除非您使用的是CCBigImage,否则可以从目标系统中取消选择CCTextureCache+CCBigImageExtensions.h和.m文件。
打开Kobold2D-Libraries项目并浏览到组/Extensions/CCBigImage。从菜单中选择视图->实用程序->文件检查器。在文件检查器中选择每个文件并取消选中目标复选框。现在,这个特定的类将不再被编译,错误也消失了。
问题似乎是这个类别使用了一个仅在实现文件中定义的私有类。不幸的是,强制加载整个cocos2d-iphone-extensions项目不是一个解决方案,因为这会带来其他错误。
https://stackoverflow.com/questions/11577206
复制相似问题