0

LinuxでWindowsバイナリをコンパイルするLinux用のmingw32クロスコンパイラがあります。glutをインストールする必要があるまで、すべてがうまくいきました... Linuxには問題なくインストールできましたが、Windowsで同じプログラムをコンパイルしようとすると、次のように要約できます。

/tmp/ccQhHDhy.o:main.cpp:(.text+0xf): __imp__glClear' /tmp/ccQhHDhy.o:main.cpp:(.text+0x1e): undefined reference to_ imp__imp__glVertex3f' /tmp/ccQhHDhy.o:main.cpp:(.text+0x5c): undefined reference to _glBegin' への未定義の参照 /tmp/ccQhHDhy.o:main.cpp:(.text+0x3d): _ 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 に答える