包含头文件,但仍然无法调用函数
Posted
技术标签:
【中文标题】包含头文件,但仍然无法调用函数【英文标题】:Header files are included, but still cannot call the functions 【发布时间】:2012-11-19 05:23:13 【问题描述】:我正在尝试在 ubuntu12.04 下用 c++ 编写一个绘图程序。 OpenGL 应用在我的代码(cc.cpp)中。我已经包含了必要的头文件,但是仍然无法使用openGL功能。
这是包含代码。
#include <GL/freeglut.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <stdio.h>
#include <math.h>
#include <cstdlib>
当我在终端中运行g++ cc.cpp
时,终端会显示:
/tmp/ccsiISvK.o: In function `initGL()':
cc.cpp:(.text+0xe): undefined reference to `glMatrixMode'
cc.cpp:(.text+0x13): undefined reference to `glLoadIdentity'
cc.cpp:(.text+0x49): undefined reference to `glOrtho'
cc.cpp:(.text+0x55): undefined reference to `glMatrixMode'
cc.cpp:(.text+0x5a): undefined reference to `glLoadIdentity'
cc.cpp:(.text+0x82): undefined reference to `glClearColor'
cc.cpp:(.text+0x87): undefined reference to `glGetError'
cc.cpp:(.text+0x9b): undefined reference to `gluErrorString'
/tmp/ccsiISvK.o: In function `render()':
cc.cpp:(.text+0x124): undefined reference to `glClear'
cc.cpp:(.text+0x130): undefined reference to `glBegin'
cc.cpp:(.text+0x14f): undefined reference to `glColor3f'
cc.cpp:(.text+0x18b): undefined reference to `glVertex2f'
cc.cpp:(.text+0x1b0): undefined reference to `glEnd'
cc.cpp:(.text+0x1b5): undefined reference to `glutSwapBuffers'
/tmp/ccsiISvK.o: In function `runMainLoop(int)':
cc.cpp:(.text+0x1f7): undefined reference to `glutTimerFunc'
/tmp/ccsiISvK.o: In function `main':
cc.cpp:(.text+0x214): undefined reference to `glutInit'
cc.cpp:(.text+0x228): undefined reference to `glutInitContextVersion'
cc.cpp:(.text+0x234): undefined reference to `glutInitDisplayMode'
cc.cpp:(.text+0x248): undefined reference to `glutInitWindowSize'
cc.cpp:(.text+0x254): undefined reference to `glutCreateWindow'
cc.cpp:(.text+0x27f): undefined reference to `glutDisplayFunc'
cc.cpp:(.text+0x29b): undefined reference to `glutTimerFunc'
cc.cpp:(.text+0x2a0): undefined reference to `glutMainLoop'
collect2: ld returned 1 exit status
谁能解决这个问题?我会很感激的!
【问题讨论】:
欢迎来到超级用户!我们是计算机硬件/软件问题专业人士的网站。编程超出了我们在常见问题解答中定义的范围,但我已投票将其移至程序员站点 ***。也请不要在那里发帖,这个问题会自然而然地移动 头文件与链接器无关。 【参考方案1】:您需要将标志添加到g++
以使用-l
选项包含必要的库。
可能类似于 here 或 here 的显示方式
试试这个 -
g++ cc.cpp -lGL -lglut
【讨论】:
以上是关于包含头文件,但仍然无法调用函数的主要内容,如果未能解决你的问题,请参考以下文章
使用makefile时,会找到linux头文件,但是当调用头文件中的函数时,它会隐式声明它们