2012-11-28 92 views
1

我在C++中使用Visual Studio 2010 Express上的OpenGL製作了2d側滾動器。我試圖編譯我的代碼,並且它的構建正確,但是我在main()函數中初始化GLFW函數時出現鏈接器錯誤。這裏是我的代碼: Visual Studio 2012 C++ OpenGL GLFW鏈接器錯誤

#include <iostream> 
#include <ctime> 


#include <GL\glfw.h> 


#include "Player.h" 


void render(); 
void update(); 


Player Player1; 
//Cross platform sleep implementation 
void _sleep(double ms) 
{ 
    double st = clock(); 
    if(ms <= 0) 
      ms = 10; 
    while(clock() < (ms + st)); 
} 

int main(int argc, char** argv) 
{ 
    std::cout <<"Loading Prized Fighter"<< std::endl; 
    glfwInit(); //Initialize GLFW 

    //Create GLFW window 
    if(glfwOpenWindow(800, 600, 5, 6, 5, 0, 8, 0, GLFW_WINDOW) != GL_TRUE) 
     std::cout << "Error creating window!" << std::endl; 

    //Set window title 
    glfwSetWindowTitle("Prized Fighter"); 

    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 

    //Start main game loop 
    //This calls the functions which update objects and render them to the screen 
    while(true) 
    { 
     update(); 
     render(); 

     glfwSwapBuffers(); //Switch buffers (double rendering) 
     _sleep(10.0); //Let a bit of CPU time for other processes 
    } 

    return 0; 
} 

/* 
    - Render function - 
     Used to draw objects to the screen 
*/ 
void render() 
{ 
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //Color to clear the screen 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

    //TODO: Draw stuff here 
    Player1.draw(); 
} 

/* 
    - Update function - 
    Updates objects; states, locations, etc 
*/ 
void update() 
{ 
    //TODO: Update objects here 
    Player1.update(); 
} 

當我編譯,我得到以下錯誤:

1> ------構建開始:項目:珍貴的戰鬥機,配置:調試的Win32 - ----- 1> main.obj:錯誤LNK2019:錯誤LNK2019:中引用>功能_WinMain @ 8

1> main.obj解析外部符號_glfwSwapBuffers解析外部符號_glfwSetWindowTitle引用在>功能_WinMain @ 8

1> main.obj:錯誤LNK2019:解析外部符號_glfwOpenWindow引用在>功能_WinMain @ 8

1> main.obj:錯誤LNK2019:解析外部符號_glfwInit在函數引用> _WinMain @ 8

1> MSVCRTD.LIB(crtexew.obj):錯誤LNK2019:解析外部符號的WinMain @ 16>在函數引用_ _tmainCRTStartup

1> C:\用戶\布倫南\文件\視覺工作室2010 \項目\ Priged Fighter \ Debug \ Prized> Fighter.exe:致命錯誤LNK1120:5個未解析的外部設備 === =======構建:0成功,1失敗,0最新,0跳過==========

鏈接過程中出現了什麼問題 - 是代碼中的錯誤?

+0

你鏈接到適當的庫嗎? –

回答

1

它看起來像你需要對鏈接:

glfw.lib 
opengl32.lib 

這將是值得一讀的發行說明:

+0

我已經根據GLFW網站鏈接了GLFW.lib文件,但我仍然收到錯誤消息。 「警告C4007:'WinMain'必須是'_stdcall' –

+0

另外,鏈接錯誤:無法解析的外部符號_main –

+0

它是您創建的控制檯應用程序(或Windows)。您可能可以通過更改」 main()「改爲」_main()「;或者相反,轉到鏈接器選項並明確設置入口點爲」main()「;鏈接器 - >高級 - >入口點。 –

0

你收到這些錯誤,因爲你不鏈接到GFWL庫,或者沒有正確鏈接到它。該庫包含您試圖調用的函數的定義。

GFWL自述文件的第4.2節說明鏈接時使用哪些庫;如果你是靜態鏈接(看起來像你)或使用DLL,你需要的步驟將會不同。