首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GLUT程序链接错误

GLUT程序链接错误
EN

Stack Overflow用户
提问于 2012-10-17 00:28:24
回答 1查看 9.6K关注 0票数 2

我想编译一个GLUT程序

代码语言:javascript
复制
#include <GL/glut.h>

int main(int argc, char **argv) {

    // init GLUT and create Window
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowPosition(100,100);
    glutInitWindowSize(320,320);
    glutCreateWindow("Lighthouse3D- GLUT Tutorial");

    return 1;

}

编译和链接命令:

代码语言:javascript
复制
gcc -o main.exe main.c -lglut32

结果:

代码语言:javascript
复制
main.o:main.c:(.text.startup+0x1c): undefined reference to `glutInit'
main.o:main.c:(.text.startup+0x28): undefined reference to `glutInitDisplayMode'
main.o:main.c:(.text.startup+0x3c): undefined reference to `glutInitWindowPosition'
main.o:main.c:(.text.startup+0x50): undefined reference to `glutInitWindowSize'
main.o:main.c:(.text.startup+0x5c): undefined reference to `glutCreateWindow'
collect2: ld returned 1 exit status        

glut的实际lib文件(3.7.6,称为Glu32.lib)位于mingw的lib文件夹中,而include文件位于include/GL中。

现在该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-17 05:46:42

请不要使用libglut.a glut32.lib**.,而是使用glut32.lib**.和进行试用使用minGW编译glut程序。**

Do GLUT for Win32是原始GLUT库的一个Windows端口。它不再得到维护或支持。MinGW“w32api”包已经附带了两个GLUT导入库:“libher.a”和,但没有附带glut头文件。

如果你曾经从互联网上下载过GLUT头文件,并试图将一个应用程序链接到这些导入库中的任何一个,你很可能会看到它失败了,出现了各种未定义的引用。

Setting Up GLUT for Win32 With MinGWSetting Up GLUT for Win32 With MinGW查找

如果您想要拥有自己的liblug32.a和lu32.dll的“构建”,请使用。

  • Download Source glut-3.7.6-src.zip (4.76 MB)
  • Download makefile
  • 进行以下修改:

将以下行添加到include/GL/Glu.h中,从第12行开始:

代码语言:javascript
复制
 #ifdef __MINGW32__
 #define APIENTRY __stdcall
 #define CALLBACK __stdcall
 #endif

注释掉lib/glut/win32_winproc.c中的第21行,如下所示:

代码语言:javascript
复制
//#include <crtdbg.h>

makefile第5行替换:

使用--enable-auto-import的-enable-auto-import

运行make

我尝试过使用链接Setting Up GLUT for Win32 With MinGW中的指南中的example.c文件。

使用预编译库和自编译库。两者都适用。

下面是结果。

示例GLUT应用程序

C从Setting Up GLUT for Win32 With MinGW上面的链接。

代码语言:javascript
复制
#include <stdlib.h>
#include <GL/glut.h>

void keyboard(unsigned char key, int x, int y);
void display(void);


int main(int argc, char** argv)
{
  glutInit(&argc, argv);
  glutCreateWindow("GLUT Test");
  glutKeyboardFunc(&keyboard);
  glutDisplayFunc(&display);
  glutMainLoop();

  return EXIT_SUCCESS;
}


void keyboard(unsigned char key, int x, int y)
{
  switch (key)
  {
    case '\x1B':
      exit(EXIT_SUCCESS);
      break;
  }
}


void display()
{
  glClear(GL_COLOR_BUFFER_BIT);

  glColor3f(1.0f, 0.0f, 0.0f);

  glBegin(GL_POLYGON);
    glVertex2f(-0.5f, -0.5f);
    glVertex2f( 0.5f, -0.5f);
    glVertex2f( 0.5f,  0.5f);
    glVertex2f(-0.5f,  0.5f);
  glEnd();

  glFlush();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12919277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档