在 OSX 中链接 GLFW 时出现问题

2024-02-16

当我通过链接器运行 C++ OpenGL 程序时,出现大量链接器错误(如下所示)。我编译不依赖 GLFW 的 OpenGL 程序没有问题。我不太确定接下来该何去何从,因为我在 Mac 上进行的 C++/ObjC 开发很少——有什么想法吗?谢谢!

正在运行的命令是:

g++ -framework Carbon -framework OpenGL -framework GLUT -lglfw -framework AGL -arch i386 display.o voxels.o -o cubile

错误是:

Undefined symbols for architecture i386:
  "_objc_msgSend", referenced from:
      __glfwPlatformOpenWindow in libglfw.a(cocoa_window.o)
      -[GLFWContentView mouseDragged:] in libglfw.a(cocoa_window.o)
      -[GLFWContentView rightMouseDragged:] in libglfw.a(cocoa_window.o)
      -[GLFWContentView otherMouseDragged:] in libglfw.a(cocoa_window.o)
      __glfwPlatformPollEvents in libglfw.a(cocoa_window.o)
      __glfwPlatformWaitEvents in libglfw.a(cocoa_window.o)
      __glfwPlatformRefreshWindowParams in libglfw.a(cocoa_window.o)
      ...
  "_objc_msgSend_stret", referenced from:
      -[GLFWWindowDelegate windowDidResize:] in libglfw.a(cocoa_window.o)
      __glfwPlatformSetWindowPos in libglfw.a(cocoa_window.o)
      -[GLFWContentView mouseMoved:] in libglfw.a(cocoa_window.o)
  "_objc_msgSend_fpret", referenced from:
      -[GLFWContentView mouseMoved:] in libglfw.a(cocoa_window.o)
      -[GLFWContentView scrollWheel:] in libglfw.a(cocoa_window.o)
      __glfwPlatformGetTime in libglfw.a(cocoa_time.o)
      __glfwPlatformSetTime in libglfw.a(cocoa_time.o)
  "_objc_msgSendSuper", referenced from:
      -[GLFWContentView keyDown:] in libglfw.a(cocoa_window.o)
      -[GLFWApplication sendEvent:] in libglfw.a(cocoa_init.o)
  "_NSApp", referenced from:
      __glfwPlatformOpenWindow in libglfw.a(cocoa_window.o)
      __glfwPlatformPollEvents in libglfw.a(cocoa_window.o)
      __glfwPlatformWaitEvents in libglfw.a(cocoa_window.o)
      __glfwPlatformCloseWindow in libglfw.a(cocoa_window.o)
      __glfwPlatformInit in libglfw.a(cocoa_init.o)
      __glfwPlatformOpenWindow in libglfw.a(cocoa_window.o)
      __glfwPlatformPollEvents in libglfw.a(cocoa_window.o)
      __glfwPlatformWaitEvents in libglfw.a(cocoa_window.o)
      __glfwPlatformCloseWindow in libglfw.a(cocoa_window.o)
      __glfwPlatformInit in libglfw.a(cocoa_init.o)
  ".objc_class_name_NSAutoreleasePool", referenced from:
      pointer-to-literal-objc-class-name in libglfw.a(cocoa_window.o)
      pointer-to-literal-objc-class-name in libglfw.a(cocoa_init.o)
  ".objc_class_name_NSString", referenced from:
      pointer-to-literal-objc-class-name in libglfw.a(cocoa_window.o)
      pointer-to-literal-objc-class-name in libglfw.a(cocoa_init.o)
  ".objc_class_name_NSCursor", referenced from:
      pointer-to-literal-objc-class-name in libglfw.a(cocoa_window.o)
  ".objc_class_name_NSScreen", referenced from:
      pointer-to-literal-objc-class-name in libglfw.a(cocoa_window.o)
  ".objc_class_name_NSOpenGLContext", referenced from:
      pointer-to-literal-objc-class-name in libglfw.a(cocoa_window.o)
  ".objc_class_name_NSOpenGLPixelFormat", referenced from:
      pointer-to-literal-objc-class-name in libglfw.a(cocoa_window.o)
  ".objc_class_name_NSWindow", referenced from:
      pointer-to-literal-objc-class-name in libglfw.a(cocoa_window.o)
  ".objc_class_name_NSView", referenced from:
      .objc_class_name_GLFWContentView in libglfw.a(cocoa_window.o)
  ".objc_class_name_NSMenuItem", referenced from:
      pointer-to-literal-objc-class-name in libglfw.a(cocoa_init.o)
  ".objc_class_name_NSMenu", referenced from:
      pointer-to-literal-objc-class-name in libglfw.a(cocoa_init.o)
  ".objc_class_name_NSBundle", referenced from:
      pointer-to-literal-objc-class-name in libglfw.a(cocoa_init.o)
  ".objc_class_name_NSThread", referenced from:
      .objc_class_name_GLFWThread in libglfw.a(cocoa_init.o)
  ".objc_class_name_NSApplication", referenced from:
      .objc_class_name_GLFWApplication in libglfw.a(cocoa_init.o)
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

解决了——当新版本的 GLFW 使用 Cocoa 时,我正在链接 Carbon。更换-framework Carbon with -framework Cocoa解决了问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OSX 中链接 GLFW 时出现问题 的相关文章

随机推荐