2014-03-06 36 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