我正在尝试编写第9版" OpenGL编程指南"中的示例代码。在Ubuntu 14.04 64位x86上使用NetBeans v8.1。示例代码为triangles.cpp,这是本书的第一个示例代码,可从here下载。我在" Linker"中添加了信息。 “项目属性”对话框的选项卡如下: 您可以看到"其他图书馆目录","图书馆"和"其他选项"字段中填充了所需的正确信息(至少我认为是这样)。
但是,当我通过单击"清理和构建项目"来构建项目时IDE中的按钮,我遇到了很多错误:
g++ -c -g -I/home/me/ComputerGraphics/include -I/home/me/glfw-3.2.1/include -MMD -MP -MF "build/Debug/GNU-Linux/01-triangles.o.d" -o build/Debug/GNU-Linux/01-triangles.o 01-triangles.cpp
mkdir -p dist/Debug/GNU-Linux
g++ -o dist/Debug/GNU-Linux/opengl1 build/Debug/GNU-Linux/01-triangles.o -L/home/me/glfw-3.2.1/bin/lib -Wl,-rpath,/home/me/glfw-3.2.1/bin/lib -lglfw3 -pthread -ldl -lGLU -lGL -lrt -lXrandr -lXxf86vm -lXi -lXinerama -lX11
build/Debug/GNU-Linux/01-triangles.o: In function `init()':
/home/me/ComputerGraphics/OpenGL1/01-triangles.cpp:27: undefined reference to `gl3wGenVertexArrays'
/home/me/ComputerGraphics/OpenGL1/01-triangles.cpp:28: undefined reference to `gl3wBindVertexArray'
/home/me/ComputerGraphics/OpenGL1/01-triangles.cpp:35: undefined reference to `gl3wCreateBuffers'
/home/me/ComputerGraphics/OpenGL1/01-triangles.cpp:36: undefined reference to `gl3wBindBuffer'
/home/me/ComputerGraphics/OpenGL1/01-triangles.cpp:37: undefined reference to `gl3wBufferStorage'
/home/me/ComputerGraphics/OpenGL1/01-triangles.cpp:46: undefined reference to `LoadShaders'
......
我之前认为它与vulkan有关,但现在我添加了-ldl并且错误仍然存在。那么,如何在NetBeans中成功编译linux上的triangles.cpp代码?非常感谢。
答案 0 :(得分:0)
事实证明除了GLFW之外我还需要一个库GL3W。请遵循以下步骤(基于我在NetBeans中已设置的设置):
(1)转到https://github.com/shakesoda/gl3w安装GL3W,或使用随书附带的现有文件。
(2)将链接器标志设置为:
-pthread -ldl -lGLU -lGL -lrt -lXrandr -lXxf86vm -lXi -lXinerama -lX11 -lXcursor
注意:先前的帖子中没有提到 -ldl 和 -lXcursor 标志,但确实需要。
(3)将gl3w.c和LoadShaders.cpp添加到源文件
(4)在LoadShaders.cpp
的开头添加#include <cstdio>
(5)编译并完成!