シンプルな三角形を回転表示するシンプルな 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
私はそれを自分のアプリケーションとリンクしましたが、それでも同じです! 誰かがすでに同じ問題に遭遇していますか? 道に迷いました。ご協力いただきありがとうございます。