opengl - Undefined reference errors when linking GLFW with minGW gcc -
i trying develop opengl application glew , glfw on windows using mingw. in current directory, project/, have directories src/, bin/, , glfw-3.0.4.bin.win64/. have files test.cpp, glew.h, glew.c, , wglew.h in src/ directory.
the directory ./glfw-3.0.4.bin.win64/include/ contains glfw/glfw3.h header file.
the directory ./glfw-3.0.4.bin.win64/lib-mingw/ contains glfw3.dll, glfw3dll.a, , libglfw3.a.
my main file, test.cpp contains,
#include "glew.h" #include "glfw/glfw3.h" #include <stdio.h> int main(int argc, char** argv) { printf("hello, world!\n"); glewinit(); glfwinit(); } i compiling program project/ directory running (split 2 lines readability)
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 and getting following error:
undefined reference `_imp_glfwinit' i think problem has me linking glfw library incorrectly. understand, including compiler option -lglfw3 tell gcc link ./glfw-3.0.4.bin.win64/lib-mingw/glfw3.dll, contains definition glfwinit().
i've looked @ solutions other problems similar mine , suggest things such copying dll file source/binary directories , changing order of -l options, none have seemed solve problem me.
your problem gcc follows strict library naming conventions. attempts find glfw3.dll.a, finds none (because named glfw3dll.a - simple rename fix problem).
next step looks libglfw3.a, , succeeds - static library, while reference declared dynamic in header files (tricky windows declspecs... problem don't exist on e.g. linux). so, cannot find _imp__glfwinit, because in static library called glfwinit, getting error.
removing libglfw3.a 1 of options - in case gcc further , find glfw3.dll , use it.
Comments
Post a Comment