2014-03-06 39 views
4

出于某种原因,我的OpenGL库文件没有正确地连接为Visual Studio 2013年OpenGL32.lib不正确连接

这里是我的所有代码:

#include <gl\glew.h> 
#include <GL\GL.h> 
#include <GL\GLU.h> 
#include <GL\freeglut.h> 

#include <iostream> 
#include <cstdlib> 

#pragma comment(lib, "OpenGL32.lib") 
#pragma comment(lib, "glu32.lib") 
#pragma comment(lib, "freeglut.lib") 

void init(void); 
void display(void); 

int main(int argc, char* argv[]) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_RGBA); 
    glutInitWindowSize(512, 512); 
    glutInitContextVersion(4, 0); 
    glutInitContextProfile(GLUT_CORE_PROFILE); 
    glutCreateWindow(argv[0]); 

    glutDisplayFunc(display); 

    glutMainLoop(); 

    return EXIT_SUCCESS; 
} 

void init(void) { } 

void display(void) 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 

    return; 
} 

我编译freeglut我自己系统,如果我删除了任何与OpenGL32.lib相关的东西,我不会从程序中得到任何错误。 (即如果我删除glClear()函数,我的程序编译并运行时没有问题。)只要我添加任何GL命令,但我开始出现链接错误。

1>main.obj : error LNK2019: unresolved external symbol [email protected] referenced in function "void __cdecl display(void)" ([email protected]@YAXXZ) 

我也试着取出#pragma指令并添加OpenGL32.lib文件到链接器的额外的依赖,我一直在努力,没有任何其他的程序之前调用#pragma指令无济于事。我使用AMD Radeon 7700 HD系列图形卡和全新驱动程序运行64x Windows 8.1机箱。任何人对可能发生的事情有任何想法?

+1

好吧我想通了,我不得不将我的构建配置设置为x64,我想我的.lib,甚至虽然它位于Program Files(x86)目录下,但仍然是一个64位的库。 – wmaxlees

+0

如果你有自己的问题的答案,那么请张贴它作为答案,并将其标记为Accepted,而不是评论。 – MicroVirus

回答

2

问题是链接器找不到一个opengl32.lib文件。 试着在VC2013下找到它。 确保其路径包含在其他库路径中。 如果它不存在 - 添加它。 如果您没有找到该库 - 请安装Windows SDK。 opengl32.lib的64位版本(忽略库中的32位,它不代表任何内容)应位于%ProgramFiles%\ Microsoft SDKs \ Windows \\ Lib \ x64目录下。 将此路径添加到项目的lib路径。

+0

是的,我其实有同样的想法,所以我采取了OpenGL32.Lib文件从lib文件夹,并直接把它移到到项目文件夹,然后用 的#pragma评论(LIB,“./OpenGL32.Lib”) ,但我依然与它得到相同的错误,我重新安装了SDK,它似乎没有解决问题。 – wmaxlees

+0

此外,whe n我改变了库的名字我试图链接到OpenGL32aaa.lib之类的东西,我得到这种错误代码: 1> LINK:致命错误LNK1104:无法打开文件'./OpenGL32aaa.lib' – wmaxlees

+0

这个意味着链接器仍然无法找到它。不要复制lib文件。把它留在原地。只需更新lib路径。 –

2

正如D'artanian已经提到的,您必须链接opengl32.lib(不是DLL)。

我有完全相同的问题,什么帮助明确设置我需要链接的库(项目选项 - >链接器 - >输入)。为连接器设置一个额外的目录是不够的,您必须将路径设置为库构建以获得适当的架构。 (在我的系统中,这有点不直观:32b版本是%ProgramFiles%\Microsoft SDKs\Windows\v7.1A\Lib\OpenGL32.Lib和64b版本是%ProgramFiles%\Microsoft SDKs\Windows\v7.1A\Lib\x64\OpenGL32.Lib