2016-10-01 188 views
0

因此,當您在C++中包含頭文件時,編譯器只會複製頭文件的內容並將其粘貼到#include所在的位置。我正在製作一個小型遊戲引擎/框架,並且我在我的Engine.h中包含了GLLEW,因爲我需要像GLFWwindow這樣的東西。但是我在使用引擎的測試遊戲1項目中遇到了一個編譯器錯誤,因爲編譯器只是複製代碼形式engine.h並粘貼到測試遊戲1的main.cpp中,它試圖在我的測試中包含glew和glfw遊戲1,我不希望它,我沒有鏈接該項目中的glew和glfw庫。我如何解決這個問題,所以我仍然可以在engine.h中訪問glew和glfw,而不將它們包含在測試遊戲1中?如何在頭文件中包含依賴項而不將其包含在包含頭文件的項目中

+1

如果調用GLFWwindow功能你需要他們在標題中,你需要包括他們。如果您不使用它們,請不要包含它們。沒有其他方法可以做到。沒有看到任何代碼,不可能說任何其他的東西 –

+0

向我們顯示代碼,以便我們可以幫助你。謝謝 – amanuel2

+1

將'engine.h'重寫爲[使用pimpl設計模式](http://stackoverflow.com/questions/3597693/how-does-the-pimpl-idiom-reduce-dependencies)。 –

回答

0

你有兩種選擇。 1.要麼你靜態鏈接與GLEW和GLFW庫項目,然後調用GLFWwindow功能 2.或者你加載GLEW和GLFW庫在C使用的LoadLibrary(),然後++代碼中使用GetProcAddess()