0

当尝试在 Kobold2d 项目中使用 SmartfoxServer 框架时,我们收到以下错误:

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 框架中定义。我已经读到需要强制链接包含类别的静态库但 SmartFoxServer-Framework 不是静态库。

有没有办法强制加载框架,所以它包括所有类别而不使用-ObjC链接器标志?或者有没有一种方便的方法可以将框架转换为静态库?任何帮助是极大的赞赏!

4

1 回答 1

4

除非您使用 CCBigImage,否则您可以从目标中取消选择 CCTextureCache+CCBigImageExtensions.h 和 .m 文件。

打开 Kobold2D-Libraries 项目并浏览到组 /Extensions/CCBigImage。从菜单中选择查看 -> 实用程序 -> 文件检查器。选择每个文件并取消选中文件检查器中的目标复选框。现在这个特定的类将不再被编译并且错误消失了。

问题似乎是这个类别使用了一个只在实现文件中定义的私有类。不幸的是,强制加载整个 cocos2d-iphone-extensions 项目并不是一个解决方案,因为这会带来其他错误。

于 2012-07-20T12:06:07.153 回答