2015-08-09 103 views
4

我遵循HOWTOBUILD.txt中的步驟。我已經爲glfw建立了必要的文件。這是第一次,鏈接器抱怨glfw。搜索後,似乎我需要鏈接到gl3wsee this link。我爲gl3w生成了靜態庫。現在,我已經打開了一個新項目,其中包括到include的路徑,請參見下圖。無法編譯OpenGL Superbible 7th樣本(無法解析的外部符號)

enter image description here

爲連接器,我已經鏈接的是glfw3dll.lib gl3w.lib opengl32.lib,其中包括他們的去路。如果我運行從第一章的樣品,

main.cpp

#include "sb7.h" 


class my_application : public sb7::application 
{ 
    void render(double currentTime) 
    { 
     static const GLfloat red[] = { 1.0f, 0.0f, 0.0f, 1.0f }; 
     glClearBufferfv(GL_COLOR, 0, red); 
    } 
}; 


DECLARE_MAIN(my_application); 

我得到鏈接錯誤。

1>main.obj : error LNK2019: unresolved external symbol "int __cdecl sb6IsExtensionSupported(char const *)" ([email protected]@[email protected]) referenced in function "public: virtual void __thiscall sb7::application::run(class sb7::application *)" ([email protected]@[email protected]@[email protected]@Z) 
1>main.obj : error LNK2019: unresolved external symbol "private: static void __stdcall sb7::application::debug_callback(unsigned int,unsigned int,unsigned int,unsigned int,int,char const *,void *)" ([email protected]@[email protected]@[email protected]) referenced in function "public: virtual void __thiscall sb7::application::run(class sb7::application *)" ([email protected]@[email protected]@[email protected]@Z) 
1>main.obj : error LNK2001: unresolved external symbol "protected: static class sb7::application * sb7::application::app" ([email protected]@[email protected]@[email protected]) 
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup 

我使用Visual Studio 2013年我已經追查這些功能鏈接器抱怨(即sb6IsExtensionSupported())之一,下面的圖片顯示了這種功能是如何被稱爲sb7.h而它的身體竟然在sb7.cpp中實施。

enter image description here

這實際上是正確的?

回答

4

我已經解決了這個問題。看起來有一個靜態庫,我必須鏈接並升級我的圖形卡驅動程序。基本上,這是我做的。

步驟一:(大廈GLFW)

如果您庫已經建成,那麼你不必這樣做,但是當你建立的例子問題,你需要設置路徑GLFW正確。爲了節省您的時間,也建立GLFW。要做到這一點,

1- install cmake. 
2- Open the command prompt and navigate to extern/glfw-3.0.4 (using cd command) 
3- Type in command prompt: cmake -G "Visual Studio 12" 
4- Open GLFW.sln and build all (do it for Debug and Release modes) 
5- Copy `glfw-3.0.4/src/Debug/glfw3.lib` into the `lib` directory and rename it to glfw3_d.lib. 
6- Copy `glf3-3.0.4/src/Release/glfw3.lib` into the `lib` directory but don't rename it. 

第二步:(建築材)

1- Open the command prompt and navigate to "build" folder 
2- Type in command prompt: cmake -G "Visual Studio 12" .. 
3- Open superbible7.sln in build folder and build all. (do it for Debug and Release modes). 

運行例子

現在lib文件夾中,有sb7.libsb7_d.lib_d表示調試模式。在我的情況下,這是造成這個問題,因此,你需要鏈接它。打開新項目時,路徑添加到sb7 includeglfw

C++->General-> Additional Include Directories

D:\CPP_Projects\VisualStudio\Modern OpenGL\sb7code-master\sb7code-master\include 
D:\CPP_Libraries\glfw-3.1.1\glfw-3.1.1\include 

爲連接器,

Linker->General->Additional Libraries Directories

D:\CPP_Libraries\glfw-3.1.1\glfw-3.1.1\install\src\Debug 
D:\CPP_Projects\VisualStudio\Modern OpenGL\GLFW\OpenGLSuperBible_7th\OpenGLSuperBible\ChapterOne\Debug 

Linker->Input->Additional Dependencies

sb7_d.lib 
glfw3dll.lib 
opengl32.lib 
glu32.lib 

結果是

enter image description here

非常重要的信息:

在我的情況下,該顯卡支持OpenGL 4.1。根據readme.txt

請仔細注意:即使你可以建立你選擇的 最喜歡的平臺來源,需要近期的OpenGL 4.x的驅動程序以便 他們。請勿打開本書,因爲您的計算機不支持 OpenGL 4.x.謝謝

在我的情況下,GLFW_OPENGL_CORE_PROFILE有問題,因此我需要升級顯卡驅動程序。我已經下載了這個軟件opengl extension viewer,它顯示我支持的opengl版本。我的顯示適應性是AMD Mobility Radeon HD 5000.我訪問了他們的網站並下載了我的顯示器的最新驅動程序。事實上,我的顯卡目前支持OpenGL 4.4,這是一個快照

enter image description here

你注意到沒有用於檢查更新驅動程序的按鈕。在我的情況下,它會將我指向一個斷開的鏈接,因此,您需要訪問該網站並檢查適應性顯示的最新更新。謝謝。