0

シンプルな三角形を回転表示するシンプルな SDL/OpenGL プログラムをコーディングしました。最初に自分のアプリケーションを Win32 アプリケーションとしてコンパイルして実行したところ、完全に動作しました。ただし、x64 構成 (Visual の構成マネージャーを使用) では、コンパイルは失敗します。すべての OpenGL メソッドが見つかりませんでした。ここに私のエラーがあります:

1>main.obj : error LNK2019: symbole externe non résolu __imp_glBegin référencé dans la fonction main
1>main.obj : error LNK2019: symbole externe non résolu __imp_glClear référencé dans la fonction main
1>main.obj : error LNK2019: symbole externe non résolu __imp_glClearColor référencé dans la fonction main
1>main.obj : error LNK2019: symbole externe non résolu __imp_glColor3ub référencé dans la fonction main
1>main.obj : error LNK2019: symbole externe non résolu __imp_glEnable référencé dans la fonction main
1>main.obj : error LNK2019: symbole externe non résolu __imp_glEnd référencé dans la fonction main
1>main.obj : error LNK2019: symbole externe non résolu __imp_glLoadIdentity référencé dans la fonction main
1>main.obj : error LNK2019: symbole externe non résolu __imp_glPopMatrix référencé dans la fonction main
1>main.obj : error LNK2019: symbole externe non résolu __imp_glPushMatrix référencé dans la fonction main
1>main.obj : error LNK2019: symbole externe non résolu __imp_glRotatef référencé dans la fonction main
1>main.obj : error LNK2019: symbole externe non résolu __imp_glScalef référencé dans la fonction main
1>main.obj : error LNK2019: symbole externe non résolu __imp_glTranslatef référencé dans la fonction main
1>main.obj : error LNK2019: symbole externe non résolu __imp_glVertex3f référencé dans la fonction main
1>main.obj : error LNK2019: symbole externe non résolu __imp_glViewport référencé dans la fonction main
1>C:\Users\VOLODIA\Desktop\SDLOpenGL64Test\x64\Debug\SDLOpenGL64Test.exe : fatal error LNK1120: 14 externes non résolus

そして、私の単純な C++ アプリケーション コード:

#include <iostream>
#include <SDL/SDL.h>
#include <GL/glew.h>
#include <GL/glu.h>

#define WIDTH 500
#define HEIGHT 500

static float angle = 0.0f;

static void eventListener(SDL_Event *pEvent, bool *pContinue)
{
    while (SDL_PollEvent(pEvent))
    {
        switch(pEvent->type)
        {
            case SDL_QUIT:
                *pContinue = false;
                break;
            case SDL_KEYDOWN:
                switch (pEvent->key.keysym.sym)
                {
                    case SDLK_ESCAPE:
                        *pContinue = false;
                        break;
                }
            break;
        }
    }
}

#undef main

int main(void)
{
    SDL_Event myEvent;
    bool isAlive = true;

    SDL_Init(SDL_INIT_VIDEO);
    SDL_WM_SetCaption("Simple SDL window", NULL);
    SDL_SetVideoMode(WIDTH, HEIGHT, 32, SDL_OPENGL);

    if (glewInit() == -1) {
        std::cout << "glewInit failed." << std::endl;
        getchar();
        return (EXIT_FAILURE);
    }

    while (isAlive == true)
    {
        eventListener(&myEvent, &isAlive);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

        glViewport(0, 0, WIDTH, HEIGHT);
        glEnable(GL_PROJECTION);
        glLoadIdentity();
        gluPerspective(45.0f, (float)WIDTH/(float)HEIGHT, 0.1f, 100.0f);
        gluLookAt(0.0f, 0.0f, 5.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);

        glEnable(GL_MODELVIEW);

        glPushMatrix();

        glTranslatef(0.0f, 0.0f, 0.0f);
        glRotatef(angle, 1.0f, 1.0f, 1.0f);
        glScalef(1.0f, 1.0f, 1.0f);

        glBegin(GL_TRIANGLES);
        glColor3ub(255, 0, 0);
        glVertex3f(0.0f, 0.75f, 0.0f);
        glColor3ub(0, 255, 0);
        glVertex3f(-0.75f, 0.0f, 0.0f);
        glColor3ub(0, 0, 255);
        glVertex3f(0.75f, 0.0f, 0.0f);
        glEnd();

        angle+=1.0f;
        glPopMatrix();

        SDL_GL_SwapBuffers();
    }
    SDL_Quit();
    return (0);
}

次の URL で glew パッケージのいくつかのバージョンをダウンロードします。

http://glew.sourceforge.net/

私は自分のアプリケーションを glew32.lib にリンクしました (なぜ彼らはあなたの lib を glew64.lib ではなく glew32.lib で呼び出したのだろうかと思います...) が、いつも同じメッセージが表示されます。そこで、他の調査を行って glew64.lib のようなものを見つけました。今回は、次の URL で「glew64.lib」というライブラリ ファイルをダウンロードしました。

https://code.google.com/p/wowmodelviewer/source/browse/trunk/src/lib/Windows/64bit/glew64.lib?spec=svn492&r=492

私はそれを自分のアプリケーションとリンクしましたが、それでも同じです! 誰かがすでに同じ問題に遭遇していますか? 道に迷いました。ご協力いただきありがとうございます。

4

1 に答える 1