我有一个Linux的mingw32交叉编译器,可以在linux上编译windows二进制文件。一切都很顺利,直到我需要安装过剩...我在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();
}
答案 0 :(得分:2)
您的程序可以在Windows中无错误地编译。存在链接错误的原因可能是您没有使用正确的makefile。但是,您的代码中存在一些错误。您可以进行以下更改:
glutSwapBuffers()
功能的末尾添加render
。然后使用makefile for mingw:
g++ -o prog -c prog.cpp -lopengl32 -lfreeglut -lglu32
答案 1 :(得分:0)
我最终尝试了freeglut并且在交叉编译失败之后。我有预编译的Windows二进制文件和更改后
#include <GL/glut.h>
到
#include <GL/freeglut.h>
并与freeglut32建立联系 并感谢肖恩指出这些错误