2011-12-26 9 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ファイル、または? –

+0

これはMakefileから実行しています。私は質問にコマンドを追加するのを忘れました - 今追加するために編集します。 –

+0

'財団 'はしませんでしたが、'ココア 'はしました。助けてくれてありがとう! –

答えて

2

それを解決 - GLFWの新しいバージョンは、ココアを使用するとき、私はカーボンとリンクされました。 -framework Carbon-framework Cocoaに置き換えると問題が解決しました。

+0

誰かがCmakeでこれらのフラグを追加する方法を知っていますか? –

関連する問題