我编写了一个简单的 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 链接(我想知道为什么他们用 glew32.lib 而不是 glew64.lib 调用你的 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
我将它与我的应用程序相关联,但它仍然是同一件事!有没有人遇到过同样的问题?我迷路了。非常感谢您的帮助。