简体   繁体   English

使用GLFW3进行编译,链接器错误'未定义引用'

[英]Compiling with GLFW3, linker errors 'undefined reference'

Having a minimal example using GLFW3 : 使用GLFW3有一个最小的例子:

#include <GLFW/glfw3.h>

int main(int argc, const char * argv[]) {
    glfwInit();
}

...results in a ton of linker errors: (small excerpt) ...导致大量链接器错误:(小摘录)

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 and libglfw3.a are both linked. OpenGL.frameworklibglfw3.a都是链接的。

在此输入图像描述

What is the reason for this? 这是什么原因? Compiling a glfw2 application before worked like a charm. 在像魅力一样工作之前编译glfw2应用程序。

In Mac OS X, glfw3 uses Cocoa (NSGL) for its OpenGL context management. 在Mac OS X中,glfw3使用Cocoa(NSGL)进行OpenGL上下文管理。 glfw2 used Carbon (CGL/AGL, depending on fullscreen or windowed mode). glfw2使用Carbon(CGL / AGL,取决于全屏或窗口模式)。

NSGL is more robust, but it is built upon an Objective C framework (Cocoa). NSGL更强大,但它建立在Objective C框架(Cocoa)之上。 In order for your software to work correctly with glfw3, you should include the Cocoa framework. 为了使您的软件能够与glfw3一起正常工作,您应该包含Cocoa框架。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM