所以我从openglbook学习OpenGL 4。
我在编辑器中复制并粘贴了简单窗口创建程序,并使用
跟随Compiling OpenGL programs on OS X gcc -o hello hello.c -framework OpenGL -framework GLUT
我收到以下错误:
Undefined symbols for architecture x86_64:
"_glewGetErrorString", referenced from:
_Initialize in chapter-c8ba2d.o
"_glewInit", referenced from:
_Initialize in chapter-c8ba2d.o
"_glutInitContextFlags", referenced from:
_InitWindow in chapter-c8ba2d.o
"_glutInitContextProfile", referenced from:
_InitWindow in chapter-c8ba2d.o
"_glutInitContextVersion", referenced from:
_InitWindow in chapter-c8ba2d.o
"_glutSetOption", referenced from:
_InitWindow in chapter-c8ba2d.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
答案 0 :(得分:0)
如果我理解正确,问题在于 -framework GLUT
表示您正在链接 Apple 随 macOS 提供的 GLUT 框架,位于 /System/Library/Frameworks
文件夹内。不幸的是,这个 GLUT 实现缺少当前版本的 FreeGLUT 提供的一些功能。并且 OpenGLBook.com 教程使用了其中的一些功能,因此,正如这里多次提到的,代码示例必须使用 FreeGLUT 进行编译。
当然,有几种方法可以做到这一点。最简单的方法是通过臭名昭著的 Homebrew 包管理器安装 freeglut
,然后按如下所述设置 CMake 项目。
所以,首先安装 freeglut
brew install freeglut
然后通过将以下几行添加到 CMakeLists.txt
find_package(FreeGLUT CONFIG REQUIRED)
find_package(glew CONFIG REQUIRED)
link_libraries(FreeGLUT::freeglut GLEW::GLEW)