2011-12-26 90 views
3

當我通過鏈接器運行我的C++ OpenGL程序時,出現大量鏈接器錯誤(包含在下面)。編譯不依賴於GLFW的OpenGL程序我沒有問題。我不確定該從哪裏出發,因爲我在Mac上完成了很少的C++/ObjC開發 - 有什麼想法?謝謝!在OSX中與GLFW鏈接的問題

正在運行的命令是:

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 
+0

你是在Xcode中編譯還是從命令行或make文件或? – 2011-12-26 17:35:11

+0

它從Makefile運行。我忘了將命令添加到問題中 - 我將編輯現在添加它。 – 2011-12-26 17:58:24

+0

'基金會'沒有,但'可可'做到了。謝謝您的幫助! – 2011-12-26 18:31:18

回答

2

解決了這個問題 - 我是鏈接到的碳時GLFW的較新版本使用可可。用-framework Cocoa代替-framework Carbon解決了這個問題。

+0

會有人或你碰巧知道如何將這些標誌添加到Cmake中嗎? – 2016-01-24 18:27:25