我想在使用minGW的Windows上使用GLEW和GLFW開發一個openGL應用程序。在當前目錄中,project/
,我有目錄src/
,bin/
和glfw-3.0.4.bin.WIN64/
。我在src/
目錄中有文件test.cpp
,glew.h
,glew.c
和wglew.h
。鏈接GLFW與minGW時未定義的參考錯誤gcc
目錄./glfw-3.0.4.bin.WIN64/include/
包含GLFW/glfw3.h
頭文件。
該目錄./glfw-3.0.4.bin.WIN64/lib-mingw/
包含glfw3.dll
,glfw3dll.a
和libglfw3.a
。
我的主文件,test.cpp
包含,
#include "glew.h"
#include "GLFW/glfw3.h"
#include <stdio.h>
int main(int argc, char** argv) {
printf("Hello, World!\n");
glewInit();
glfwInit();
}
我通過運行(分成兩行的可讀性)
gcc -DGLEW_STATIC -DGLFW_DLL -o ./bin/test ./src/*.cpp ./src/glew.c
-I ./glfw-3.0.4.bin.WIN64/include/ -L ./glfw-3.0.4.bin.WIN64/lib-mingw/ -lglfw3 -lopengl32
編譯從project/
目錄下的程序,我正在以下錯誤:
undefined reference to `_imp_glfwInit'
我覺得有問題m與我不正確地鏈接GLFW庫。據我所知,包括編譯選項-lglfw3
將告訴gcc鏈接./glfw-3.0.4.bin.WIN64/lib-mingw/glfw3.dll
,其中包含glfwInit()
的定義。
我看過類似於我的其他問題的解決方案,他們建議諸如將dll文件複製到源/二進制目錄以及更改-l選項的順序等,但沒有一個似乎解決了問題爲了我。
你的gcc命令分成兩行。爲了清晰起見,這裏的可讀性如何?或者那是你的實際命令(在這種情況下,它是錯誤的)?另外,我還記得''Ipath'和'-Lpath'必須寫無空格。 – keltar
是的,對不起,我應該注意到gcc命令是爲了可讀性而拆分的。不使用空格運行該命令仍會產生相同的錯誤。 – recreate
不能肯定地說,但我想你的圖書館有些問題。你確定它們兼容mingw,應該是64bit嗎?你能用32位版本運行嗎? – keltar