使用GLFW3编译,链接器错误'未定义引用' [英] Compiling with GLFW3, linker errors 'undefined reference'

查看:1346
本文介绍了使用GLFW3编译,链接器错误'未定义引用'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有一个使用 GLFW3 的最小示例:

Having a minimal example using GLFW3:

#include <GLFW/glfw3.h>

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

...导致大量链接器错误:(small excerpt) / p>

...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 libglfw3.a 都已链接。

这是什么原因?编译工作就像一个魅力前的 glfw2 应用程序。

What is the reason for this? Compiling a glfw2 application before worked like a charm.

推荐答案

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

In Mac OS X, glfw3 uses Cocoa (NSGL) for its OpenGL context management. glfw2 used Carbon (CGL/AGL, depending on fullscreen or windowed mode).

NSGL更强劲,但它是建立在一个Objective C的框架(可可)建成。为了使您的软件与glfw3正常工作,您应该包括Cocoa框架。

NSGL is more robust, but it is built upon an Objective C framework (Cocoa). In order for your software to work correctly with glfw3, you should include the Cocoa framework.

这篇关于使用GLFW3编译,链接器错误'未定义引用'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆