【问题标题】:How to set up in NetBeans 8.1 to successfully compile an OpenGL code which uses GLFW如何在 NetBeans 8.1 中设置以成功编译使用 GLFW 的 OpenGL 代码
【发布时间】:2017-01-21 07:18:29
【问题描述】:

我正在尝试在 Ubuntu 14.04 64 位 x86 上使用 NetBeans v8.1 编译第 9 版“OpenGL 编程指南”中的示例代码。示例代码为 triangles.cpp,本书的第一个示例代码,可从here下载。我在项目属性对话框的“链接器”选项卡中添加了如下信息: 您可以看到“Additional Library Directories”、“Libraries”和“Additional Options”字段中填满了所需且正确的信息(至少我是这么认为的)。

但是,当我通过单击 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 代码呢?非常感谢。

【问题讨论】:

  • "好像dlclose是一个vulkan函数" 不,it's not
  • 好的,我添加了-ldl,但错误信息又回到了它的起源:未定义的对'gl3wGenVertexArrays'的引用,对'gl3wBindVertexArray'的未定义引用,对'gl3wCreateBuffers'的未定义引用,等等。

标签: opengl netbeans linker glfw


【解决方案1】:

事实证明,除了 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) 编译完成!

【讨论】:

    猜你喜欢
    • 2014-06-04
    • 2012-12-23
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 2012-03-06
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多