2013-02-03 28 views
3

我正嘗試在Qt中使用OpenGL。 我正在關注這個例子:http://qt-project.org/doc/qt-5.0/qtgui/openglwindow.html使用Qt 5 build for msvc2012。最終我收到以下錯誤:在Qt中使用OpenGL時的鏈接器錯誤

  1. 錯誤LNK2019:解析外部符號_ 小鬼 _glClear @ 4在功能上引用的 「市民:虛擬無效__thiscall OpenGLWindow ::渲染(無效)」?(渲染@ OpenGLWindow @@ UAEXXZ)d:\文件\代碼\ Qt的項目\ qttest2 \ qttest2 \ openglwindow.obj qttest2
  2. 錯誤LNK2001:解析外部符號_ 小鬼 _glClear @ 4 d:\文件\代碼\ Qt的項目\ qttest2 \ qttest2 \ trianglewindow.obj qttest2
  3. 錯誤LNK2019:無法解析的外部符號_ imp在函數「public:virtual void __thiscall TriangleWindow :: render(void)」(?render @ TriangleWindow @@ UAEXXZ)中引用的_glDrawArrays @ 12 D:\ Documents \ Code \ Qt Projects \ qttest2 \ qttest2 \ trianglewindow.obj qttest2
  4. 錯誤LNK2019:無法解析的外部符號_ imp _glViewport @ 16在函數「public:virtual void __thiscall TriangleWindow :: render(void)」(?render @ TriangleWindow @@ UAEXXZ)中引用D:\ Documents \ Code \ Qt Projects \ qttest2 \ qttest2 \ trianglewindow.obj qttest2
  5. 錯誤LNK1120:3周無法解析的外部d:\文檔\代碼\ Qt的項目\ qttest2 \ WIN32 \調試\ qttest2.exe qttest2

我可以看到,它有做鏈接的OpenGL功能,但我沒有太多的關於鏈接的知識。

即使我從OpenGLWindow示例中複製源代碼,我也會得到錯誤。

回答

3

您必須添加opengl32.lib到鏈接庫的列表。在QtCreator的.pro文件中添加了OpenGL模塊應該做的伎倆

QT += opengl 
+0

謝謝datenwolf!我認爲Qt項目模板在使用Gtgui時顯得非常重要,但顯然不是。 – aPerfectMisterMan

+0

您是否知道在使用Qt visual studio插件時是否使用.pro文件?據我瞭解,.pro文件與QtCreator應用程序有關。 – aPerfectMisterMan

+0

@MHA:當然,在Visual Studio中,您必須使用該編譯器/鏈接器設置。 Qt在幾個庫中是分開的,其中一個是qtopengl。{so,dll},因此您必須將它添加到鏈接器文件中,即qtopengl.lib和opengl32.lib(或libGL.so)。 (或者任何DLL/LIB被稱爲準確的。我通常使用CMake和Qt CMake模塊爲我完成所有繁重的工作:P) – datenwolf

2

你有沒有添加了OpenGL模塊在你的親文件是這樣的:

QT += opengl 
+0

我添加opengl32.lib到鏈接庫的列表,這是工作室等效視覺。謝謝你的回答!因爲我認爲他是第一個人,所以我將datenwolf的答覆標記爲答案。 – aPerfectMisterMan

+0

@MHA請你可以解釋你如何「將opengl32.lib」添加到鏈接庫列表中。我使用MSVC2013作爲Qt Creator的編譯器 – user929404

+0

可悲的是。自從我處理這個問題已經有一段時間了(近一年)。你最好在其他地方尋求解決方法:)祝你好運! – aPerfectMisterMan

1

如果您使用Qt 5,再加入未來的lib在你的項目文件(* .pro),來

LIBS += -LD:\Qt\5.5\mingw492_32\lib\libQt5OpenGL.a -lopengl32 

D:\Qt\5.5\mingw492_32\lib\libQt5OpenGL.a是路徑。

+0

我很想回答這個問題,但是自從提出這個問題後的四年中,我忘記了實際的問題:)但是,謝謝,我希望它可以幫助別人。 – aPerfectMisterMan

0

在linux環境下[mesa]庫安裝可以解決這個問題。 [LIB32檯面,一個開放源代碼實現了OpenGL規範]

[pacman -S mesa ]  *Arch Linux 
[apt-get install mesa] *ubuntu/Mint/Raspbian 
+1

我很樂意回答這個問題,但自從我提出這個問題後的四年裏,我已經讓我忘記了實際的問題:)但是,謝謝你,我希望它能幫助別人。 – aPerfectMisterMan

+0

這是一個想法,可以幫助開發人員尋找解決方案。 –