GLFW MinGW 链接错误

2021-12-31 00:00:00 qt-creator compiler-errors c++ mingw32 glfw

我尝试用 C++ 测试 GLFW 已经有一段时间了,但一直有链接器问题.我对 C++ 还很陌生,虽然我有 Java 和 C# 方面的经验,但直接使用编译器对我来说还是很陌生的.这是我的设置信息.

I've been attempting to test out GLFW with C++ for quite a while and am having constant linker issues. I am fairly new to C++, although I have experience in Java and C#, working directly with the compiler is fairly new to me. Here's my setup information.

IDE:Qt Creator

IDE: Qt Creator

操作系统:Windows 7 64 位

OS: Windows 7 64-bit

编译器:MinGW32 4.8.1

Compiler: MinGW32 4.8.1

01:23:26: Starting: "C:MinGWinmingw32-make.exe" 
C:/MinGW/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory 'A:/workspace_cpp/Test-Debug'
g++ -Wl,-subsystem,console -mthreads -o debugTest.exe debug/main.o  -lglfw3 -lopengl32 
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../libglfw3.a(win32_monitor.c.obj):win32_monitor.::(.text+0x2c7): undefined reference to `CreateDCW@16'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../libglfw3.a(win32_monitor.c.obj):win32_monitor.c:(.text+0x358): undefined reference to `GetDeviceCaps@8'
Makefile.Debug:77: recipe for target 'debugTest.exe' failed
mingw32-make[1]: Leaving directory 'A:/workspace_cpp/Test-Debug'
Makefile:34: recipe for target 'debug' failed
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../libglfw3.a(win32_monitor.c.obj):win32_monitor.c:(.text+0x370): undefined reference to `GetDeviceCaps@8'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../libglfw3.a(win32_monitor.c.obj):win32_monitor .c:(.text+0x39e): undefined reference to `DeleteDC@4'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe:     c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../libglfw3.a(win32_monitor.c.obj): bad reloc address 0x20 in section `.eh_frame'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status

我正在测试的代码是 GLFW 文档页面上的代码,我是使用我自己构建的 GLFW,并且已经尝试过这个和其他几个潜在的解决方案.我曾尝试使用预构建的 GLFW mingw 库,但我无法让它们工作.

The code I'm testing is the code on the GLFW Documentation Page, I'm using my own build of GLFW, and have already tried this and several other potential solutions. I have tried using the prebuilt GLFW mingw libraries but I couldn't get them to work.

推荐答案

enhzflep 的解决方案是在编译时包含到 gdi32 库中,制作所有必要的链接器 -lglfw3 -lgdi32 -lopengl32,作为缺失的方法,CreateDCWGetDeviceCapsDeleteDC都在libgdi32.a中的>MinGW lib 文件夹 C:MinGWliblibgdi32.a 在这种情况下.

The solution as posted by enhzflep was to include to gdi32 library when compiling, making all the necessary linkers -lglfw3 -lgdi32 -lopengl32, as the missing methods, CreateDCW, GetDeviceCaps and DeleteDC are all inside of libgdi32.a in the MinGW lib folder C:MinGWliblibgdi32.a in this case.

相关文章