freeglut.ext中的函数不能调用的问题

_子宽 2015-07-23 09:34:34
参考《OPENGL编程宝典》第八版,第一章的实例,我去掉着色器部分后敲入电脑,如下:
#include<iostream>
#include<gl/glew.h>
#define GLUT_DISABLE_ATEXIT_HACK
#include<gl/glut.h>
#include<gl/freeglut_ext.h>
#include<gl/freeglut.h>

#pragma comment(lib, "glut32.lib")
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "freeglut_static.lib")
#pragma comment(lib, "freeglut.lib")
#pragma comment(lib, "glew32.lib")

using namespace std;

GLuint VAOs[1];
GLuint Buffers[1];

void init()
{
glGenVertexArrays(0, VAOs);
glBindVertexArray(VAOs[0]);

GLfloat vertices[6][2] = {
{-0.90, -0.90},
{ 0.85, -0.90},
{-0.90, 0.85},
{ 0.90, -0.85},
{ 0.90, 0.90},
{-0.85, 0.90},
};

glGenBuffers(1, Buffers);
glBindBuffer(GL_ARRAY_BUFFER,Buffers[0]);
glBufferData(GL_ARRAY_BUFFER,sizeof(vertices),vertices,GL_STATIC_DRAW);

glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0);
glEnableVertexAttribArray(0);

glBindVertexArray(0);
}

void display()
{
glClear(GL_COLOR_BUFFER_BIT);

glBindVertexArray(VAOs[0]);
glDrawArrays(GL_TRIANGLES, 0, 6);
glFlush();

glBindVertexArray(0);
}

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA);
glutInitWindowSize(512,512);
glutInitContextVersion(4,3);
glutInitContextProfile(GLUT_CORE_PROFILE);
glutCreateWindow(argv[0]);

if(glewInit()){
cerr<<"Unable to initialize GLEW..."<<endl;
exit(EXIT_FAILURE);
}

init();
glutDisplayFunc(display);

glutMainLoop();

}


因为遇到了freeglut库的链接问题,所以代码前加了
#define GLUT_DISABLE_ATEXIT_HACK

以及
#pragma comment(lib, "glut32.lib")
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "freeglut_static.lib")
#pragma comment(lib, "freeglut.lib")
#pragma comment(lib, "glew32.lib")

但是即使这样,还是无法链接到freeglut_ext.h头文件里面的函数,报错如下:
1>Source.obj : error LNK2019: 无法解析的外部符号 __imp__glutInitContextVersion@8,该符号在函数 _main 中被引用
1>Source.obj : error LNK2019: 无法解析的外部符号 __imp__glutInitContextProfile@4,该符号在函数 _main 中被引用
1>E:\Project\VS\tem\Debug\tem.exe : fatal error LNK1120: 2 个无法解析的外部命令

我又试了一下freeeglut_ext.h下的其他函数,都是同样的错误。

freeglut库使用的3.0.0,配置应该没有问题,lib、dll和头文件都放好了。

哪位大侠能给点提示、 、不胜感激T^T
...全文
135 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
_子宽 2015-07-23
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
将错误信息中出现的标识符放在百度里面搜一下,看其在哪个.lib中,然后在本地硬盘上搜索该.lib,如果没有,在网上搜索相关库或模块下载安装,然后将其所在目录填写到“附加依赖库所在目录”中,将其名字添加到“附加依赖库”中,重新连接。 VC6: 工程、设置、C/C++、分类:Preprocessor、附加包含路径:填写附加头文件所在目录 逗号间隔多项 工程、设置、Link、分类:Input、附加库路径:填写附加依赖库所在目录 分号间隔多项 工程、设置、Link、分类:Input、对象/库模块:填写附加依赖库的名字.lib 空格间隔多项 VS20xx: 项目、属性、C/C++、附加包含目录:填写附加头文件所在目录 分号间隔多项 项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录 分号间隔多项 项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib 空格或分号间隔多项
搜过了,可是搜不到__imp__glutInitContextVersion相关的库啊
赵4老师 2015-07-23
  • 打赏
  • 举报
回复
将错误信息中出现的标识符放在百度里面搜一下,看其在哪个.lib中,然后在本地硬盘上搜索该.lib,如果没有,在网上搜索相关库或模块下载安装,然后将其所在目录填写到“附加依赖库所在目录”中,将其名字添加到“附加依赖库”中,重新连接。 VC6: 工程、设置、C/C++、分类:Preprocessor、附加包含路径:填写附加头文件所在目录 逗号间隔多项 工程、设置、Link、分类:Input、附加库路径:填写附加依赖库所在目录 分号间隔多项 工程、设置、Link、分类:Input、对象/库模块:填写附加依赖库的名字.lib 空格间隔多项 VS20xx: 项目、属性、C/C++、附加包含目录:填写附加头文件所在目录 分号间隔多项 项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录 分号间隔多项 项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib 空格或分号间隔多项

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧