J’ai besoin d’aide pour comstackr un exemple simple pour GLFW avec MinGW

J’essaie de comstackr un exemple à partir de la documentation de GLFW.

Ma structure de dossiers pour les bibliothèques et les fichiers source est la suivante:

C: \ cpp \

glfw3.dll glfw3dll.a libglfw3.a test.cpp

comprendre\

GLFW \

glfw3.h glfw3native.h

#include  int main(void) { GLFWwindow* window; /* Initialize the library */ if (!glfwInit()) return -1; /* Create a windowed mode window and its OpenGL context */ window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL); if (!window) { glfwTerminate(); return -1; } /* Make the window's context current */ glfwMakeContextCurrent(window); /* Loop until the user closes the window */ while (!glfwWindowShouldClose(window)) { /* Render here */ /* Swap front and back buffers */ glfwSwapBuffers(window); /* Poll for and process events */ glfwPollEvents(); } glfwTerminate(); return 0; } 

J’essaie de le comstackr avec cette commande

 c:\cpp>x86_64-w64-mingw32-g++ -lglfw3 -Iinclude test.cpp -o test 

mais j’ai cette erreur:

 c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lglfw3 collect2.exe: error: ld returned 1 exit status 

-v sorties:

 Using built-in specs. COLLECT_GCC=x86_64-w64-mingw32-g++ COLLECT_LTO_WRAPPER=c:/users/username/gcc/bin/../libexec/gcc/x86_64-w64-ming w32/4.7.2/lto-wrapper.exe Target: x86_64-w64-mingw32 Configured with: ../gcc-4.7.2-mingw/configure --host=x86_64-w64-mingw32 --build= x86_64-unknown-linux-gnu --target=x86_64-w64-mingw32 --prefix=/home/gfortran/gcc -home/binary/mingw32/native/x86_64/gcc/4.7.2 --with-sysroot=/home/gfortran/gcc-h ome/binary/mingw32/cross/x86_64/gcc/4.7.2 --with-gcc --with-gnu-ld --with-gnu-as --with-gmp=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/gmp --with-mpfr =/home/gfortran/gcc-home/binary/mingw32/native/x86_64/mpfr --with-mpc=/home/gfor tran/gcc-home/binary/mingw32/native/x86_64/mpc --with-cloog=/home/gfortran/gcc-h ome/binary/mingw32/native/x86_64/cloog --with-ppl=/home/gfortran/gcc-home/binary /mingw32/native/x86_64/ppl --with-host-libstdcxx='-lstdc++ -lsupc++ -lm' --enabl e-cloog-backend=ppl --enable-targets=i686-w64-mingw32,x86_64-w64-mingw32 --enabl e-lto --enable-languages=c,c++,fortran --enable-libgomp --enable-threads=win32 - -enable-static --enable-shared=lto-plugin --enable-plugins --enable-ld=yes --ena ble-libquadmath --enable-libquadmath-support --disable-nls --disable-tls --disab le-win32-registry Thread model: win32 gcc version 4.7.2 (GCC) COLLECT_GCC_OPTIONS='-I' 'include' '-o' 'test.exe' '-v' '-mtune=generic' '-march =x86-64' c:/users/username/gcc/bin/../libexec/gcc/x86_64-w64-mingw32/4.7.2/cc1plus.e xe -quiet -v -I include -iprefix c:\users\username\gcc\bin\../lib/gcc/x86_64 -w64-mingw32/4.7.2/ -U_REENTRANT test.cpp -quiet -dumpbase test.cpp -mtune=gener ic -march=x86-64 -auxbase test -version -o C:\Users\username~1.ADM\AppData\Local\T emp\ccfe85gV.s GNU C++ (GCC) version 4.7.2 (x86_64-w64-mingw32) comstackd by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.0.0, MPC version 0.9 warning: GMP header version 5.0.5 differs from library version 5.0.1. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring duplicate directory "c:/users/username/gcc/lib/gcc/../../lib/gcc/x8 6_64-w64-mingw32/4.7.2/../../../../include/c++/4.7.2" ignoring duplicate directory "c:/users/username/gcc/lib/gcc/../../lib/gcc/x8 6_64-w64-mingw32/4.7.2/../../../../include/c++/4.7.2/x86_64-w64-mingw32" ignoring duplicate directory "c:/users/username/gcc/lib/gcc/../../lib/gcc/x8 6_64-w64-mingw32/4.7.2/../../../../include/c++/4.7.2/backward" ignoring duplicate directory "c:/users/username/gcc/lib/gcc/../../lib/gcc/x8 6_64-w64-mingw32/4.7.2/include" ignoring nonexistent directory "/home/gfortran/gcc-home/binary/mingw32/cross/x86 _64/gcc/4.7.2/home/gfortran/gcc-home/binary/mingw32/native/x86_64/gcc/4.7.2/lib/ gcc/x86_64-w64-mingw32/4.7.2/../../../../include" ignoring duplicate directory "c:/users/username/gcc/lib/gcc/../../lib/gcc/x8 6_64-w64-mingw32/4.7.2/include-fixed" ignoring duplicate directory "c:/users/username/gcc/lib/gcc/../../lib/gcc/x8 6_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/include" ignoring nonexistent directory "/home/gfortran/gcc-home/binary/mingw32/cross/x86 _64/gcc/4.7.2/mingw/include" #include "..." search starts here: #include  search starts here: include c:\users\username\gcc\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../i nclude/c++/4.7.2 c:\users\username\gcc\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../i nclude/c++/4.7.2/x86_64-w64-mingw32 c:\users\username\gcc\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../i nclude/c++/4.7.2/backward c:\users\username\gcc\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/include c:\users\username\gcc\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/include-fixed c:\users\username\gcc\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x 86_64-w64-mingw32/include End of search list. GNU C++ (GCC) version 4.7.2 (x86_64-w64-mingw32) comstackd by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.0.0, MPC version 0.9 warning: GMP header version 5.0.5 differs from library version 5.0.1. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Comstackr executable checksum: 0b3cd9e378660c38a8a80567400ff92f COLLECT_GCC_OPTIONS='-I' 'include' '-o' 'test.exe' '-v' '-mtune=generic' '-march =x86-64' c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x 86_64-w64-mingw32/bin/as.exe -v -I include -o C:\Users\username~1.ADM\AppData\Loca l\Temp\ccQqklHV.o C:\Users\username~1.ADM\AppData\Local\Temp\ccfe85gV.s GNU assembler version 2.22.52 (x86_64-w64-mingw32) using BFD version (GNU Binuti ls) 2.22.52.20120723 COMPILER_PATH=c:/users/username/gcc/bin/../libexec/gcc/x86_64-w64-mingw32/4. 7.2/;c:/users/username/gcc/bin/../libexec/gcc/;c:/users/username/gcc/bin /../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/bin/ EQ_LIBRARY_PATH=c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7. 2/;c:/users/username/gcc/bin/../lib/gcc/;C:/Users/username/gcc/x86_64-w6 4-mingw32/lib/../lib/;c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw3 2/4.7.2/../../../../x86_64-w64-mingw32/lib/../lib/;c:/users/username/gcc/bin /../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../lib/;C:/Users/username/gcc/ x86_64-w64-mingw32/lib/;c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-ming w32/4.7.2/../../../../x86_64-w64-mingw32/lib/;c:/users/username/gcc/bin/../l ib/gcc/x86_64-w64-mingw32/4.7.2/../../../ COLLECT_GCC_OPTIONS='-I' 'include' '-o' 'test.exe' '-v' '-mtune=generic' '-march =x86-64' c:/users/username/gcc/bin/../libexec/gcc/x86_64-w64-mingw32/4.7.2/collect2. exe --sysroot=/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/4.7.2 -mi 386pep -Bdynamic -o test.exe C:/Users/username/gcc/x86_64-w64-mingw32/lib/.. /lib/crt2.o C:/Users/username/gcc/x86_64-w64-mingw32/lib/../lib/crtbegin.o - Lc:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2 -Lc:/users/ username/gcc/bin/../lib/gcc -LC:/Users/username/gcc/x86_64-w64-mingw32/lib /../lib -Lc:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../. ./../../x86_64-w64-mingw32/lib/../lib -Lc:/users/username/gcc/bin/../lib/gcc /x86_64-w64-mingw32/4.7.2/../../../../lib -LC:/Users/username/gcc/x86_64-w64 -mingw32/lib -Lc:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2 /../../../../x86_64-w64-mingw32/lib -Lc:/users/username/gcc/bin/../lib/gcc/x 86_64-w64-mingw32/4.7.2/../../.. C:\Users\username~1.ADM\AppData\Local\Temp\ccQqkl HV.o -lglfw3 -lstdc++ -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 - lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt C:/Us ers/username/gcc/x86_64-w64-mingw32/lib/../lib/crtend.o c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x8 6_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/users/username/gcc/bin /../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../lib/libglfw3.a when searching f or -lglfw3 c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x8 6_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/users/username/gcc/bin /../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../lib/glfw3.dll when searching fo r -lglfw3 c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x8 6_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/users/username/gcc/bin /../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../lib\libglfw3.a when searching f or -lglfw3 c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x8 6_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/users/username/gcc/bin /../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../libglfw3.a when searching for -lgl fw3 c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x8 6_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/users/username/gcc/bin /../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../glfw3.dll when searching for -lglf w3 c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x8 6_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/users/username/gcc/bin /../lib/gcc/x86_64-w64-mingw32/4.7.2/../../..\libglfw3.a when searching for -lgl fw3 c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x8 6_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/users/username/gcc/bin /../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../lib/libglfw3.a when searching f or -lglfw3 c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x8 6_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/users/username/gcc/bin /../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../lib/glfw3.dll when searching fo r -lglfw3 c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x8 6_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/users/username/gcc/bin /../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../libglfw3.a when searching for -lgl fw3 c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x8 6_64-w64-mingw32/bin/ld.exe: skipping incompatible c:/users/username/gcc/bin /../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../glfw3.dll when searching for -lglf w3 c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x8 6_64-w64-mingw32/bin/ld.exe: cannot find -lglfw3 collect2.exe: error: ld returned 1 exit status 

c: \ cpp> x86_64-w64-mingw32-g ++ -Iinclude test.cpp -o test. \ glfw3.dll

 c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x8 6_64-w64-mingw32/bin/ld.exe: i386 architecture of input file `.\glfw3.dll' is in compatible with i386:x86-64 output C:\Users\username~1.ADM\AppData\Local\Temp\cceVroaP.o:test.cpp:(.text+0xe): undefi ned reference to `glfwInit' C:\Users\username~1.ADM\AppData\Local\Temp\cceVroaP.o:test.cpp:(.text+0x43): undef ined reference to `glfwCreateWindow' C:\Users\username~1.ADM\AppData\Local\Temp\cceVroaP.o:test.cpp:(.text+0x53): undef ined reference to `glfwTerminate' C:\Users\username~1.ADM\AppData\Local\Temp\cceVroaP.o:test.cpp:(.text+0x66): undef ined reference to `glfwMakeContextCurrent' C:\Users\username~1.ADM\AppData\Local\Temp\cceVroaP.o:test.cpp:(.text+0x74): undef ined reference to `glfwSwapBuffers' C:\Users\username~1.ADM\AppData\Local\Temp\cceVroaP.o:test.cpp:(.text+0x79): undef ined reference to `glfwPollEvents' C:\Users\username~1.ADM\AppData\Local\Temp\cceVroaP.o:test.cpp:(.text+0x85): undef ined reference to `glfwWindowShouldClose' C:\Users\username~1.ADM\AppData\Local\Temp\cceVroaP.o:test.cpp:(.text+0x93): undef ined reference to `glfwTerminate' c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x8 6_64-w64-mingw32/bin/ld.exe: C:\Users\username~1.ADM\AppData\Local\Temp\cceVroaP.o : bad reloc address 0x0 in section `.pdata' c:/users/username/gcc/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x8 6_64-w64-mingw32/bin/ld.exe: final link failed: Invalid operation collect2.exe: error: ld returned 1 exit status 

L’ordre dans -lglfw3 la bibliothèque apparaît dans la ligne de commande est important pour gcc ainsi que les chemins de recherche de la bibliothèque. Essayez de déplacer -lglfw3 à la fin et ajoutez le répertoire actuel au chemin de recherche en utilisant -L .

par exemple.

 g++ -Iinclude test.cpp -o test.exe -L . -lglfw3 

Edit1: En regardant la sortie d’état verbeuse, il semble que libglfw3.a que vous possédez n’est pas compatible avec le mingw gcc que vous utilisez. Heureusement, l’éditeur de liens ld peut fonctionner directement avec les fichiers dll. Voir si les travaux suivants:

 g++ -Iinclude test.cpp -o test.exe .\glfw3.dll 

L’alternative serait de créer une bibliothèque d’importation à partir de glfw3.dll utilisant mingw gcc que vous avez. Ceci est un peu plus .def car vous devez créer un fichier .def suivi d’un appel à dlltool.

Edit2: Le mingw gcc que vous utilisez est un compilateur Windows 64 bits. Assurez-vous que vous utilisez la bibliothèque glfw3 64 bits correcte et non la version 32 bits. Section de téléchargement GLFW .

Je pense que vous avez un problème de nommage. Il semble que le compilateur Mingw32 recherche les fichiers de bibliothèque glfw3.dll, glfw3.a et glfw3.h. Le problème est que votre fichier de bibliothèque s’appelle libglfw3.a. Maintenant, vous devez le renommer en glfw3.a pour qu’il puisse le trouver. Si cela ne fonctionne toujours pas, vous devez renommer glfw3dll.a en glfw3.dll.a