6

を使用した最小限の例がありGLFW3ます:

#include <GLFW/glfw3.h>

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

...大量のリンカーエラーが発生します: (小さな抜粋)

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.frameworklibglfw3.a両方がリンクされています。

ここに画像の説明を入力

これの理由は何ですか?glfw2以前はアプリケーションをコンパイルするのが魅力的でした。

4

2 に答える 2

13

Mac OS X では、glfw3 は OpenGL コンテキスト管理に Cocoa (NSGL) を使用します。glfw2 は Carbon (フルスクリーンまたはウィンドウ モードに応じて CGL/AGL) を使用しました。

NSGL はより堅牢ですが、Objective C フレームワーク (Cocoa) 上に構築されています。ソフトウェアが glfw3 で正しく動作するためには、Cocoa フレームワークを含める必要があります。

于 2013-08-22T22:25:58.417 に答える