编译在 Mac OS X 中使用 OpenGl 4 的 C 程序



所以我正在从openglbook学习OpenGL 4。

我在编辑器中复制并粘贴了简单的窗口创建程序,并使用 在OS X上编译OpenGL程序

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)

如果我

理解正确,问题是-framework GLUT这意味着您正在链接到Apple随macOS提供的GLUT框架,并位于/System/Library/Frameworks文件夹中。不幸的是,此 GLUT 实现缺少当前版本的 FreeGLUT 提供的一些功能。OpenGLBook.com 教程都使用其中一些功能,因此,正如这里多次提到的,代码示例必须使用 FreeGLUT 进行编译。

当然,这几乎没有什么方法可以做到。最简单的方法是通过臭名昭著的自制包管理器安装 freeglut,然后按照如下所述设置 CMake 项目。

因此,首先安装freeglut

brew install freeglut

然后通过将以下行添加到CMakeLists.txt来设置 CMake 项目

find_package(FreeGLUT CONFIG REQUIRED)
find_package(glew CONFIG REQUIRED)
link_libraries(FreeGLUT::freeglut GLEW::GLEW)

相关内容

  • 没有找到相关文章

最新更新