Tôi đang cố gắng biên dịch một ví dụ từ tài liệu của GLFW.Tôi cần giúp đỡ để cố gắng biên dịch một ví dụ đơn giản cho GLFW với MinGW
cấu trúc thư mục của tôi cho các thư viện và các file nguồn là:
C: \ cpp \
glfw3.dll glfw3dll.a libglfw3.a test.cpp
bao gồm \
GLFW \
glfw3.h glfw3native.h
#include <GLFW/glfw3.h>
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;
}
Tôi đang cố gắng để biên dịch nó với lệnh này
c:\cpp>x86_64-w64-mingw32-g++ -lglfw3 -Iinclude test.cpp -o test
nhưng tôi nhận được lỗi này: kết quả đầu ra
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:
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)
compiled 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)
compiled 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
Compiler 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 -m i
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
Điều đó không có tác dụng, cùng một lỗi. – caboose0013
Bạn có thể thêm '-v' để xem những gì đang được chuyển tới trình liên kết không? Thêm nó vào câu hỏi của bạn. – greatwolf
@ caboose0013 Chỉ để loại trừ các vấn đề rõ ràng, bạn có chắc chắn 'glfw3.dll, glfw3dll.a, libglfw3.a' là dưới 'C: \ cpp' aka đó là những gì' dir' xác nhận? Và bạn cũng đang chạy lệnh từ 'C: \ cpp' làm thư mục làm việc hiện tại? – greatwolf