Ошибка компоновщика на GLFW при попытке скомпилировать GLFW на Mac

Я пытаюсь использовать glfw 2.7.5 на моем Mac с XCode, но я получаю следующие ошибки:

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)

Я читал это Проблемы с использованием GLFW и XCode: не компилируются и несколько других ссылок в интернете, но я не могу найти решение.

Я установил инфраструктуру Cocoa, инфраструктуру OpenGL и libglfw.a (которую я скомпилировал с помощью «sudo make cocoa-install»), в флагах компоновщика я установил -lgflw и собираю для 32-битной Intel. Сначала я строил для 64-битной, но я думаю, что GLFW пока не поддерживает это на Mac (я получал ошибки файла джойстика), ошибка меняется, когда я компилирую для 32-битной, и он не может найти функции, которые я пользуюсь. Есть идеи, что я могу сделать, чтобы это исправить?

0

Решение

Скорее всего, вы создали libglfw.a для 64-битной системы, поэтому вы получаете ошибки при попытке использовать ее в 32-битном приложении. Вы можете перестроить libglfw.a для 32-битной (или как «толстую» 32-битную и 64-битную библиотеку), или вы можете просто собрать свое приложение как 64-битное.

Обратите внимание, что в последних версиях Mac OS X и Xcode gcc по умолчанию создает 64-битный код, поэтому вам нужно указать -m32 в командной строке, чтобы получить 32-битный код. То, как вы делаете это на практике, зависит от make-файла для libglfw.a — вполне может быть ARCH или другой символ, который вы можете указать в командной строке, чтобы вызвать 32-битную сборку.

1

Другие решения

Других решений пока нет …