0

xcode を使用して Mac で glfw 2.7.5 を使用しようとしていますが、次のエラーが発生します。

Undefined symbols for architecture i386:
  "_glfwGetKey", referenced from:
      Game::run() in Game.o
      RedScene::update(float, bool) in main.o
  "_glfwGetWindowParam", referenced from:
      Game::run() in Game.o
  "_glfwInit", referenced from:
      Window::Window() in Window.o
  "_glfwOpenWindow", referenced from:
      createWindow(int, int, int, int, int, int, int, int) in Window.o
  "_glfwOpenWindowHint", referenced from:
      Window::Window() in Window.o
  "_glfwPollEvents", referenced from:
      Game::run() in Game.o
  "_glfwSetKeyCallback", referenced from:
      createWindow(int, int, int, int, int, int, int, int) in Window.o
  "_glfwSetMouseButtonCallback", referenced from:
      createWindow(int, int, int, int, int, int, int, int) in Window.o
  "_glfwSetMousePosCallback", referenced from:
      createWindow(int, int, int, int, int, int, int, int) in Window.o
  "_glfwSetMouseWheelCallback", referenced from:
      createWindow(int, int, int, int, int, int, int, int) in Window.o
  "_glfwSetWindowTitle", referenced from:
      Window::setCaption(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in Window.o
  "_glfwSwapBuffers", referenced from:
      RedScene::update(float, bool) in main.o
  "_glfwSwapInterval", referenced from:
      createWindow(int, int, int, int, int, int, int, int) in Window.o
  "_glfwTerminate", referenced from:
      Window::~Window() in Window.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

このProblems using GLFW and XCode : won't compileおよびインターネット上の他のいくつかのリンクを読みましたが、解決策が見つかりません。

Cocoa フレームワーク、OpenGL フレームワーク、および libglfw.a (「sudo make cocoa-install」を使用してコンパイル) をリンカー フラグに設定し、-lgflw を設定し、32 ビット Intel 用にビルドしています。最初は 64 ビット用にビルドしていましたが、GLFW は Mac ではまだサポートしていないと思います (ジョイスティック ファイル エラーが発生していました)。32 ビット用にコンパイルするとエラーが変化し、関数が見つかりません。使っています。これを修正するために何ができるか考えていますか?

4

1 に答える 1

1

ほとんどの場合、64 ビット用に libglfw.a をビルドしているため、32 ビット アプリで使用しようとするとリンク エラーが発生します。libglfw.a を 32 ビット用に (または「太い」32 ビットおよび 64 ビット ライブラリとして) 再ビルドするか、アプリを 64 ビットとしてビルドすることができます。

-m32Mac OS X および Xcode の最近のバージョンでは、gcc はデフォルトで 64 ビット コードをビルドするため、32 ビット コードを取得するにはコマンド ラインで指定する必要があることに注意してください。実際にこれを行う方法は、libglfw.a の makefile によって異なりARCHます。32 ビット ビルドを強制するためにコマンド ラインで指定できる またはその他のシンボルが存在する可能性があります。

于 2012-10-09T15:02:34.813 に答える