OSX 版本: 10.13 - 高山脉
Macbook Pro 2011年末
Xcode: 9
级别:初级
我查看了Apple文档中的OpenGL编程指南,但是文档不是那么友好,所以我还没有尝试过。
我做了谷歌研究和YouTube关于如何简单地创建一个入门窗口,我已经使用XCode成功地创建了一个带有我所需颜色的矩形的窗口。但它是OpenGL v2,并且有许多弃用警告。
我想在XCode环境之外开发OpenGL,但我未能编译它,这是我的主要内容.cpp
#include <stdlib.h>
#include <OpenGL/gl.h>
#include <GLUT/glut.h>
void display () {
glClearColor ( 1.f, 0.f, 0.f, 1.f );
glClear ( GL_COLOR_BUFFER_BIT );
glLoadIdentity ();
glFlush ();
}
int main ( int argc, char** argv ) {
glutInit ( &argc, argv );
glutInitDisplayMode ( GLUT_SINGLE );
glutInitWindowSize ( 640, 480 );
glutInitWindowPosition ( 100, 100 );
glutCreateWindow ( "Baby GL" );
glutDisplayFunc ( display );
glutMainLoop ();
return 0;
}
我正在使用 vscode + vim 作为主文本编辑器
以下是我在终端中编译 main.cpp 的方法:
g++ -pipe --std=c++14 main.cpp -lm
我尝试在 main 中没有代码的情况下编译它们,并且包含的库没有抛出任何错误,然后我将所有代码复制粘贴回 main 并编译它,它抛出了这个错误:
7 warnings generated. // just deprecation warning
Undefined symbols for architecture x86_64:
"_glClear", referenced from:
display() in main-26b0d3.o
"_glClearColor", referenced from:
display() in main-26b0d3.o
"_glFlush", referenced from:
display() in main-26b0d3.o
"_glLoadIdentity", referenced from:
display() in main-26b0d3.o
"_glutCreateWindow", referenced from:
_main in main-26b0d3.o
"_glutDisplayFunc", referenced from:
_main in main-26b0d3.o
"_glutInit", referenced from:
_main in main-26b0d3.o
"_glutInitDisplayMode", referenced from:
_main in main-26b0d3.o
"_glutInitWindowPosition", referenced from:
_main in main-26b0d3.o
"_glutInitWindowSize", referenced from:
_main in main-26b0d3.o
"_glutMainLoop", referenced from:
_main in main-26b0d3.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这些错误意味着链接器无法在任何地方找到这些函数。
您必须使用 -framework Cocoa
和 -framework OpenGL
进行编译/链接。当您使用 GLUT 时,您还需要将其下载为预编译框架,并将-framework GLUT
附加到编译/链接标志中。