在Mac终端中编译OpenGL程序

时间:2014-10-21 01:41:54

标签: c++ macos opengl compiler-errors

我正在使用XCode版本6.0.1完全更新的Mac Os X 10.9.5。我还安装了安装XCode后必须安装的命令行实用程序。我在我的openGL库中使用GLFW和GLEW。在使用Macports安装GLFW时手动安装GLEW。

我想在没有XCode的情况下进行编码,因为我一直在Windows(使用MingW)和Linux上进行编码。我已经google了如何编译程序,还搜索了stackoverflow。

所以,目前我的编译命令看起来像这样 (这是一个C ++程序)

g++ -framework Cocoa -framework OpenGL -framework CoreFoundation -framework CoreVideo -framework IOKit -L/usr/lib -L/usr/local/lib -I/usr/include/GLFW -I/usr/local/include/GL main.cpp -o main

我一直收到以下错误:

Undefined symbols for architecture x86_64:
"_glfwCreateWindow", referenced from:
  _main in main-ba7a57.o
"_glfwInit", referenced from:
  _main in main-ba7a57.o
"_glfwMakeContextCurrent", referenced from:
  _main in main-ba7a57.o
"_glfwTerminate", referenced from:
  _main in main-ba7a57.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

该计划是:

#define GLEW_STATIC
#include <glew.h>
#include <glfw3.h>
#include <iostream>

using namespace std;

int main(int argc, char* argv[]) {

GLFWwindow* window;
if(!glfwInit()) exit(EXIT_FAILURE);
window = glfwCreateWindow(1024, 768, "glfw", NULL, NULL);
if(!window) {
    glfwTerminate();
    exit(EXIT_FAILURE);
}
glfwMakeContextCurrent(window);

const GLubyte* version = glGetString(GL_VERSION);
cout << "OpenGL version: " << version << endl;
glfwTerminate();
return 0;
}

2 个答案:

答案 0 :(得分:0)

这只是猜测,但尝试在命令行末尾添加`-lglfw'。这告诉g ++针对libglfw进行编译。

答案 1 :(得分:0)

错误显示Undefined symbols for architecture x86_64这一事实让我想到您安装的库的版本可能是针对64位架构而构建的。请记住,在选择要安装的库时,应根据要定位的体系结构选择32位或64位版本,而不是开发机器使用的架构。

请参阅this other question以供参考。