MinGW Debian。使用freeglut“undefined reference”交叉编译win64项目

时间:2015-10-05 20:14:20

标签: c++ compilation mingw

我有简单的(示例)代码:

#include <iostream>
#include <stdlib.h> //Needed for "exit" function

//Include OpenGL header files, so that we can use OpenGL
#ifdef __APPLE__
#include <OpenGL/OpenGL.h>
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif

using namespace std;

//Called when a key is pressed
void handleKeypress(unsigned char key, //The key that was pressed
                int x, int y) {    //The current mouse coordinates
switch (key) {
    case 27: //Escape key
        exit(0); //Exit the program
    }
}

//Initializes 3D rendering
void initRendering() {
    //Makes 3D drawing work when something is in front of something else
    glEnable(GL_DEPTH_TEST);
}

//Called when the window is resized
void handleResize(int w, int h) {
    //Tell OpenGL how to convert from coordinates to pixel values
    glViewport(0, 0, w, h);

    glMatrixMode(GL_PROJECTION); //Switch to setting the camera perspective

    //Set the camera perspective
    glLoadIdentity(); //Reset the camera
    gluPerspective(45.0,                  //The camera angle
               (double)w / (double)h, //The width-to-height ratio
               1.0,                   //The near z clipping coordinate
               200.0);                //The far z clipping coordinate
}

//Draws the 3D scene
void drawScene() {
    //Clear information from last draw
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glMatrixMode(GL_MODELVIEW); //Switch to the drawing perspective
    glLoadIdentity(); //Reset the drawing perspective

    glBegin(GL_QUADS); //Begin quadrilateral coordinates

    //Trapezoid
    glVertex3f(-0.7f, -1.5f, -5.0f);
    glVertex3f(0.7f, -1.5f, -5.0f);
    glVertex3f(0.4f, -0.5f, -5.0f);
    glVertex3f(-0.4f, -0.5f, -5.0f);

    glEnd(); //End quadrilateral coordinates

    glBegin(GL_TRIANGLES); //Begin triangle coordinates

    //Pentagon
    glVertex3f(0.5f, 0.5f, -5.0f);
    glVertex3f(1.5f, 0.5f, -5.0f);
    glVertex3f(0.5f, 1.0f, -5.0f);

    glVertex3f(0.5f, 1.0f, -5.0f);
    glVertex3f(1.5f, 0.5f, -5.0f);
    glVertex3f(1.5f, 1.0f, -5.0f);

    glVertex3f(0.5f, 1.0f, -5.0f);
    glVertex3f(1.5f, 1.0f, -5.0f);
    glVertex3f(1.0f, 1.5f, -5.0f);

    //Triangle
    glVertex3f(-0.5f, 0.5f, -5.0f);
    glVertex3f(-1.0f, 1.5f, -5.0f);
    glVertex3f(-1.5f, 0.5f, -5.0f);

    glEnd(); //End triangle coordinates

    glutSwapBuffers(); //Send the 3D scene to the screen
}

int main(int argc, char** argv) {
    //Initialize GLUT
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(400, 400); //Set the window size

    //Create the window
    glutCreateWindow("Basic Shapes - videotutorialsrock.com");
    initRendering(); //Initialize rendering

    //Set handler functions for drawing, keypresses, and window resizes
    glutDisplayFunc(drawScene);
    glutKeyboardFunc(handleKeypress);
    glutReshapeFunc(handleResize);

    glutMainLoop(); //Start the main loop.  glutMainLoop doesn't return.
    return 0; //This line is never reached
}

正如你所看到的,这段代码来自一个教程,通常编译得很好,直到我开始搞乱交叉编译它。但是当我尝试用以下代码编译它时:

 x86_64-w64-mingw32-g++ -Wall -o basicshapes.exe main.cpp -lfreeglut -L/usr/x86_64-w64-mingw32/bin

我得到的错误列表如下:

/tmp/cczfJtsd.o:main.cpp:(.text+0xbc): undefined reference to `__imp_glEnable'
(...several more gl func similar errors)
collect2: error: ld returned 1 exit status

我真的不知道出了什么问题。这是我第一次进行交叉编译,我还没有完全理解它。 我从这个链接安装了来自synaptic和freeglut的MinGW:

http://www.transmissionzero.co.uk/computing/using-glut-with-mingw/

我尝试自己编译,但我无法这样做,所以我只是从这个软件包中复制/粘贴安装它。

0 个答案:

没有答案