2012-12-26 49 views
2

我正在嘗試編譯我正在處理的小型2D引擎。到目前爲止,這一切都進行得很順利,但自從我加入GLEW以來(因爲我想開始研究片段着色器),測試程序拒絕構建。爲了澄清,我將引擎構建爲一個靜態庫(Mage2D.lib),然後構建一個使用該庫的測試程序。當庫編譯好時鏈接器錯誤(LNK2001)

這是我收到的錯誤:

1>Link: 
1> libpng15.lib(pngget.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance 
1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library 
1>Mage2D_D.lib(root.obj) : error LNK2001: unresolved external symbol [email protected] 
1>Mage2D_D.lib(root.obj) : error LNK2001: unresolved external symbol [email protected] 
1>C:\Users\Jesse\Documents\Visual Studio 2010\Projects\Rose\Debug\MageTest.exe : fatal error LNK1120: 2 unresolved externals 
1> 
1>Build FAILED. 

現在通常我知道這意味着我不包括正確的庫到我的測試程序(glew32.lib)。但是在這裏,這是不可能的,因爲我將glew.c編譯到Mage2D.lib中。 GLEW實際上是Mage2D源代碼的一部分,因爲用四個文件和引擎組成部分的程序似乎很方便。

我在他們的網站上關注了GLEW的指示信,關於如何構建GLEW並將其包含到我的項目中,但我一直收到此錯誤。

這到底是怎麼回事?

+0

是給你的錯誤的唯一GLEW的GLEW功能你正在使用的功能? – Aaron

+0

目前,是的。現在我想簡單地將GLEW添加到我的項目中,並將一些代碼添加到我的引擎的根類的Initialise()函數中。它檢查OpenGL的正確版本是否可用於Shader支持。 (當然,看看GLEW是否會工作!哪個是問題:p) –

+0

前兩個警告是因爲你用不同的設置編譯代碼,/ MD vs/MT尤其重要。這些錯誤是由於讓編譯器相信你將使用glew的DLL版本,但實際上鍊接了靜態庫版本。通常使用#define或/ D –

回答

0

我檢查glew.h,我敢肯定你只需要包括glew.h之前添加GLEW_STATIC定義:

#define GLEW_STATIC 
#include "GL/glew.h" 
+0

這個定義應該由構建系統確定,而不是在源代碼中進行硬編碼。使用'/ DGLEW_STATIC'或將其添加到項目文件中的定義列表中。 – rubenvb

+1

無論讓你開心! – kerim

+0

我現在解決了它,由於某種原因,這不起作用。在使用GLEW的另一個項目上工作時,我將包含源代碼並在包含之前在glew.c中定義了GLEW_STATIC。去接受這個。 –