gpt4 book ai didi

由 C++ OpenGL undefined reference

转载 作者:太空宇宙 更新时间:2023-11-03 10:30:33 25 4
gpt4 key购买 nike

我正在尝试通过以下 tutorial 使 OpenGL 使用 C++ 在我的 Linux 机器上工作

我使用的是 Ubuntu 12.04 LTS。我有两个软件包 freeglut3-devmesa-common-dev 我通过 sudo apt-get install package-name1 package-name2 安装/p>

为了确保我进入了推荐的目录 /usr/include/GL 并使用 ls 列出了文件:

freeglut_ext.h  freeglut.h  freeglut_std.h  glext.h  gl.h  gl_mangle.h  glu.h  glu_mangle.h  glut.h  glxext.h  glx.h  glx_mangle.h  internal

我注意到我确实有 gl.hglut.h 所以我按照教程的建议测试了示例程序。我下载了 zip 文件,将文件解压缩到同一目录,然后运行 ​​make 实用程序。这是运行 make

后的一些输出
g++ -Wall -o cube main.cpp imageloader.cpp -lglut
imageloader.cpp: In function ‘Image* loadBMP(const char*)’:
imageloader.cpp:141:2: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
/tmp/ccWT2wvp.o:main.cpp:function loadTexture(Image*): error: undefined reference to 'glGenTextures'
/tmp/ccWT2wvp.o:main.cpp:function loadTexture(Image*): error: undefined reference to 'glBindTexture'
/tmp/ccWT2wvp.o:main.cpp:function loadTexture(Image*): error: undefined reference to 'glTexImage2D'

我还遇到了大约 20 个其他 undefined reference 错误。所以,一定是我没有正确安装某些东西,或者缺少文件。我注意到我通过运行 glxinfo 检查了硬件加速信息,我确实有硬件加速。

  1. 如何使用 C++ 使 OpenGL 工作

编辑 如果我使用两个答案的组合证明它有效:具体来说我做了以下事情:

someonespc:~/c++$ ls
imageloader.cpp imageloader.h main.cpp Makefile Makefile~ vtr.bmp
d2b2@d2b2-Aspire-7745G:~/c++$ g++ -Wall -lGL -o cube main.cpp imageloader.cpp -lglut -lGLU
imageloader.cpp: In function ‘Image* loadBMP(const char*)’:
imageloader.cpp:141:2: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
someonespc:~/c++$ ls
cube imageloader.cpp imageloader.h main.cpp Makefile Makefile~ vtr.bmp

然后我运行 ./cube 并且成功了!请解释为什么放置 -lGL-lGLU 有效

最佳答案

-lGL 添加到 gcc 命令行选项。它告诉链接器可以在 libGL.so 中找到这些函数(这是到 libGL.so.1 的链接)。

关于由 C++ OpenGL undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18034152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com