以下是使用GLFW3
的最简示例:
#include <GLFW/glfw3.h>
int main(int argc, const char * argv[]) {
glfwInit();
}
...结果会导致大量的链接错误:(摘录)
Undefined symbols for architecture x86_64:
"_CFArrayAppendValue", referenced from:
_addJoystickElement in libglfw3.a(cocoa_joystick.m.o)
"_CFArrayApplyFunction", referenced from:
__glfwInitJoysticks in libglfw3.a(cocoa_joystick.m.o)
_addJoystickElement in libglfw3.a(cocoa_joystick.m.o)
"_CFArrayCreateMutable", referenced from:
__glfwInitJoysticks in libglfw3.a(cocoa_joystick.m.o)
...
"_objc_msgSend_fixup", referenced from:
l_objc_msgSend_fixup_count in libglfw3.a(cocoa_monitor.m.o)
l_objc_msgSend_fixup_objectAtIndex_ in libglfw3.a(cocoa_monitor.m.o)
l_objc_msgSend_fixup_objectForKey_ in libglfw3.a(cocoa_monitor.m.o)
l_objc_msgSend_fixup_alloc in libglfw3.a(cocoa_init.m.o)
l_objc_msgSend_fixup_release in libglfw3.a(cocoa_init.m.o)
l_objc_msgSend_fixup_alloc in libglfw3.a(nsgl_context.m.o)
l_objc_msgSend_fixup_release in libglfw3.a(nsgl_context.m.o)
...
OpenGL.framework
和libglfw3.a
都被链接。
这是为什么呢?以前编译glfw2
应用程序就能很好地工作。
IOKit
、CoreVideo
和Cocoa
框架。请参见这个问题的答案。 - Appleshell