0

我有一个用于 Linux 的 mingw32 交叉编译器,它在 linux 上编译 windows 二进制文件。在我需要安装 glut 之前,一切都很顺利......我在 linux 中安装得很好,但是每当我尝试在 Windows 上编译相同的程序时,我可以将其归结为:

/tmp/ccQhHDhy.o:main.cpp:(.text+0xf): 未定义引用__imp__glClear' /tmp/ccQhHDhy.o:main.cpp:(.text+0x1e): undefined reference to_imp _glBegin ' /tmp/ccQhHDhy.o:main.cpp:(.text+0x3d): 未定义引用__imp__glVertex3f' /tmp/ccQhHDhy.o:main.cpp:(.text+0x5c): undefined reference to_imp _glVertex3f ' /tmp/ccQhHDhy.o:main.cpp:(.text+0x7b): 未定义引用__imp__glVertex3f' /tmp/ccQhHDhy.o:main.cpp:(.text+0x85): undefined reference to_ imp _glEnd'

通过直接与 dll 链接

收到这些链接器错误后,我尝试链接 opengl32 gdi32 winmm glut lib 文件和 glu32

但还是一样

继承人的源代码:

#include <stdlib.h>
#include <GL/glut.h>
using namespace std;
void render(void);
int main(int argc, char **argv){
    glutInit(&argc, argv);
    glutInitWindowPosition(-1,-1);
    glutInitWindowSize(500,500);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("My First Glut Application");
    glutDisplayFunc(render);
    glutMainLoop();
    return 0;
}

void render(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glBegin(GL_TRIANGLES);
        glVertex3f(-0.5, -0.5, 0.0);
        glVertex3f(0.5, 0.0, 0.0);
        glVertex3f(0.0, .5, 0.0);
    glEnd();


}
4

2 回答 2

2

您的程序可以在 Windows 中无错误地编译。出现链接错误的原因可能是您没有使用正确的 makefile。但是,您的代码中存在一些错误。您可以进行以下更改:

  • 在函数glutSwapBuffers()末尾添加。render

然后使用 mingw 的 makefile:

g++ -o prog -c prog.cpp -lopengl32 -lfreeglut -lglu32

于 2011-09-04T01:59:02.147 回答
0

我最终尝试了 freeglut 并在交叉编译失败后尝试了它。我得到了预编译的 Windows 二进制文件,并在更改
#include <GL/glut.h>

#include <GL/freeglut.h>

并与 freeglut32 链接它工作并感谢肖恩指出这些错误

于 2011-09-04T23:57:21.057 回答