2015-07-21 55 views
2

我已經使用glfw3編寫了一個簡單的程序,我相信我已經鏈接了適用的(靜態)庫並正確地包含了頭文件。無法編譯C++(使用GLFW)

下面是我的命令行輸出:

23:20:58 **** Incremental Build of configuration Debug for project Void **** 
Info: Internal Builder is used for build 
g++ -L../lib -static -o Void Main.o -lglfw3 -lgdi32 -lglew32 -lopengl32 
Main.o: In function `ZN4MainC2Ev': 
G:\eclipse\CPP WorkSpace\Void\Debug/../Main.cpp:15: undefined reference to `glfwInit' 
G:\eclipse\CPP WorkSpace\Void\Debug/../Main.cpp:16: undefined reference to `glfwCreateWindow' 
G:\eclipse\CPP WorkSpace\Void\Debug/../Main.cpp:18: undefined reference to `glfwCreateWindow' 
G:\eclipse\CPP WorkSpace\Void\Debug/../Main.cpp:20: undefined reference to `glfwDestroyWindow' 
collect2.exe: error: ld returned 1 exit status 

23:20:59 Build Finished (took 205ms) 

我一直在尋找所有谷歌和計算器,我必須失去了一些東西。我的圖書館可能是32位,我試圖編譯爲64位,但我不知道如何檢查這一點。
另外,你會注意到我已經包含了glew頭文件。如果我調用包含在其中的函數,它們被定義並且不會導致任何問題。任何幫助都非常感謝。

更新: 嘗試使用glfw(libglfw3.a)的32位庫構建後,出現新錯誤。 ../lib\libglfw3.a(init.c.obj):init.c:(.text+0x49):未定義參考`__ms_vsnprintf」

回答

0

你好subtlepseudonym

錯誤:「 ../lib\libglfw3.a(init.c.obj):init.c:(.text+0x49):未定義的引用在我看來,'__ms_vsnprintf'」

是由於這樣的事實,你是試圖在Linux上構建你的代碼,但你有的glfw二進制文件是用於Windows平臺的。

我假設你在linux/unix平臺上,因爲我看到編譯器爲g ++。

「__ms_vsnprintf」存在於爲windows平臺構建的glfw庫中。

我試着在我的結尾修改代碼並修改一下,然後在本地使用「glew」和「glfw」,它的工作完美。

如果您仍然遇到問題,我還會添加這些詳細信息。

+0

我m在Windows 7上使用mingw。我會給Linux二進制文件一個嘗試,讓你知道發生了什麼。感謝您的答覆。 – subtlepseudonym

+0

我使用cmake編譯了GLFW,並且包含了它的glfw3.h文件。該項目仍然不編譯並列出glfw3.h中的方法爲未定義的(如上面的編譯器輸出所示)。 – subtlepseudonym

+0

我通過在將它重命名爲libglfw3dll.a後導入glfw3dll.a而得到它。這看起來像一個駭人的解決方案。 – subtlepseudonym

-1

我有類似的問題:

GLFWwindow* window = glfwCreateWindow (640, 480, "just a random title", NULL, NULL); 

鏈接錯誤:

undefined reference to `_imp__glfwCreateWindow' 

試圖無數的 「解決方案」 後,修復了刪除的#define GLFW_DLL:

// #define GLFW_DLL 
#include <GLFW/glfw3.h>