6

有一个使用的最小示例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应用程序就像一个魅力。

4

2 回答 2

13

在 Mac OS X 中,glfw3 使用 Cocoa (NSGL) 进行 OpenGL 上下文管理。glfw2 使用了 Carbon(CGL/AGL,取决于全屏或窗口模式)。

NSGL 更健壮,但它建立在 Objective C 框架 (Cocoa) 之上。为了让您的软件与 glfw3 一起正常工作,您应该包含 Cocoa 框架。

于 2013-08-22T22:25:58.417 回答