【问题标题】:Compiling first OpenGL Redbook program (triangles.cpp) [duplicate]编译第一个 OpenGL 红皮书程序(triangles.cpp)[重复]
【发布时间】:2014-07-20 08:08:40
【问题描述】:

我开始使用 Redbook 4.3 版学习 OpenGL,我需要一些链接帮助(我认为)。我正在运行 Linux Mint 和 Radeon HD 5000/6000/7350/8350 系列视频卡。我正在尝试编译和链接第一个程序(triangles.cpp)。我安装了freeglut3freeglut3-devlibxi-devglew-utilslibglew-dev。我在旧版本的 OpenGL Superbible 中发现了这个链接命令,我猜我需要添加 -lGLEW。

g++ triangles.cpp -lX11 -lXi -lglut -lGL -lGLU -lGLEW

我收到以下错误:

/tmp/ccXSL2nx.o: In function `init()':
triangles.cpp:(.text+0x11d): undefined reference to `LoadShaders'
collect2: error: ld returned 1 exit status

我从红皮书的源代码下载中复制了vgl.hLoadShaders.hLoadShaders.cpp。我还缺少什么?

【问题讨论】:

  • 你也需要编译链接LoadShaders.cpp

标签: c++ opengl


【解决方案1】:

试试这个:

g++ triangles.cpp LoadShaders.cpp -lX11 -lXi -lGL -lGLU -lGLEW -lglut -o triangles 

这会将triangles.cppLoadShaders.cpp 编译并链接到单个输出文件triangles

请注意,您可能不需要“-lX11 -lXi”。要测试这个尝试:

g++ triangles.cpp LoadShaders.cpp -lGL -lGLU -lGLEW -lglut -o triangles 

还要注意the order of libraries is important

【讨论】:

  • 如果图书馆的顺序很重要,这看起来不是一个好的顺序。您通常首先需要较高级别的库,以便链接器在链接这些较低级别的库之前看到它们对较低级别库的引用。所以顺序应该大多是相反的。
猜你喜欢
  • 1970-01-01
  • 2015-08-22
  • 2016-03-26
  • 1970-01-01
  • 2017-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多