簡體   English   中英

借助glew和freeglut學習OpenGL; 但是有一個問題

[英]Learning OpenGL with glew and freeglut; but there is an issue

我正在使用Visual Studio 2013,並使用nuget安裝“ glew”和“ freeglut”。 我正在學習課程,並遵循以下安裝說明:

http://in2gpu.com/2014/10/15/setting-up-opengl-with-visual-studio/

一路上我確實很困惑,但是我仔細閱讀了說明。 在我的簡單項目的構建結束時,出現了一個錯誤:

1> LINK:致命錯誤LNK1104:無法打開文件Dependencies \\ freeglut.obj

#include <iostream>
#include "Dependencies\glew\glew.h"
#include "Dependencies\freeglut\freeglut.h"

int main(int argc, char **argv)
{
    return 0;
}

我讀過其他有關安裝庫的網站,但我感到困惑。 任何幫助和深入的討論將非常有幫助。 謝謝。

鏈接:致命錯誤LNK1104:無法打開文件Dependencies \\ freeglut。 obj '

它不應該是freeglut.obj ,而是freeglut.lib

另外,請確保您已正確遵循本教程的“ Now let's prepare FreeGLUT部分中的所有步驟:它們非常清楚地解釋了如何添加搜索庫目錄和鏈接器輸入,但是Visual Studio報告缺少Dependencies\\freeglut.obj請仔細檢查,在項目屬性-> Linker -> Input -> Additional Dependencies

不幸的是,我不得不問一個明顯的問題:freeglut.lib是否位於應該位於的位置,您是否指向正確的目錄?

您的錯誤顯示Dependencies \\ freeglut.obj,但是如果您遵循教程,則freeglut應該位於Dependencies \\ freeglut中。 Windows上的另一個常見錯誤是使用帶有空格的完整文件路徑(C:.... My Documents ...),但沒有將整個文件路徑放在引號中。 鏈接器因此被絆倒了。

編輯:我猜我被否決了,因為我沒有注意到更明顯的問題,即您的鏈接器正在尋找freeglut.obj,而您沒有。 確保您將其稱為freeglut.lib。

從概念上講,這是發生的事情,這可能會幫助您進行故障排除:編寫cpp文件並進行編譯時,它會轉換為obj文件。 編譯器不需要了解所有內容。 您可以聲明一個返回int並將bool作為參數的函數,並將其用於代碼中,然后編譯器會說“好,如果您這樣說的話”。

您的程序可能會有幾個cpp文件,因此還有幾個obj文件。 編譯后,將obj文件鏈接在一起,形成可執行文件。 如果此處有任何錯誤(包含錯誤!),則是鏈接器錯誤。 鏈接器說:“好,您說您正在使用此功能...在哪里?”

您已經獲取了lib文件。 在這種情況下,它們是靜態庫,本質上是一堆obj文件的容器,與您自己編寫了所有freeglut函數和類並進行編譯一樣,沒有什么不同。 鏈接器要鏈接它們。 對於您編寫和編譯的代碼,Visual Studio確保所有內容都保存在正確的文件夾中,並在正確的位置顯示。 對於來自其他地方的編譯目標文件? 它無法知道,因此您必須告訴VS兩件事:庫位於哪個文件夾中,以及庫文件的名稱是什么。 然后,鏈接器知道要查找的位置以及要查找的內容。

您將文件放在錯誤的位置,或告訴VS錯誤的位置,或錯誤的文件,或某種組合。 或者,您已經完成了一些類似的操作,例如在文件路徑中使用空格而不加引號。 另一個常見的錯誤是混合使用不同的平台。 x86(即32位)和x64目標文件是不同的,並且如果您的鏈接器正在尋找一種類型,則它不會理解另一種。 您的下載提供了用於不同平台的庫,而VS使您可以選擇目標平台。 確保所有內容都相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM