我有一个XCode 4.2工作区,其中包含一个Cocos Touch静态库(混合的Objective C,Objective C ++和C ++)和一个cocos2d iOS应用程序。静态库和iOS应用程序都是兄弟姐妹。
问题是当尝试链接到静态库中的函数和类时,应用程序的链接器失败。该应用程序的静态库设置为“Link Binary With Libraries”。就好像静态库中的函数和类要么没有被导出或者没有被应用程序查找。
例如,我创建了一个函数int foo() { return 42; }
并将其放在库中,然后在应用程序中从main.m
调用它。
错误如下所示:
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_RootViewController", referenced from:
objc-class-ref in AppDelegate.o
"_foo", referenced from:
_main in main-972D78D1B1575F1.o
"_OBJC_CLASS_$_CCDirector", referenced from:
objc-class-ref in AppDelegate.o
objc-class-ref in libCocos2DBase.a(BaseScene.o)
objc-class-ref in libCocos2DBase.a(Director.o)
"_OBJC_CLASS_$_CCLayer", referenced from:
_OBJC_CLASS_$_FoundationLayer in libCocos2DBase.a(BaseScene.o)
"_OBJC_METACLASS_$_CCLayer", referenced from:
_OBJC_METACLASS_$_FoundationLayer in libCocos2DBase.a(BaseScene.o)
"_OBJC_CLASS_$_CCTexture2D", referenced from:
objc-class-ref in AppDelegate.o
"_OBJC_CLASS_$_EAGLView", referenced from:
objc-class-ref in AppDelegate.o
"_OBJC_CLASS_$_CCScene", referenced from:
objc-class-ref in libCocos2DBase.a(BaseScene.o)
ld: symbol(s) not found for architecture armv7
collect2: ld returned 1 exit status
非常感谢任何可以提供帮助的人,我是XCode的新手并且花了很多时间寻找解决方案。
答案 0 :(得分:1)
看起来您的静态库没有为armv7架构编译,而使用它的应用程序是,因此找不到合适的符号。尝试为armv7编译静态库(或者如果你没有源代码,看看你是否可以让开发人员为armv7编译它)。