使用MinGW-w64 GCC编译时GetDpiForWindow()未声明的问题
解决MinGW-w64编译时找不到GetDpiForWindow()的问题
问题原因
GetDpiForWindow() 是Windows 10 1607(周年更新)及以上版本才提供的API,MinGW-w64的头文件默认不会启用这类较新的Windows API声明,必须通过定义特定宏来解锁。而Visual Studio默认已配置了足够高的目标Windows版本,因此编译无问题。
解决方案
有两种方式可以解决这个问题:
1. 在代码中添加宏定义
在包含任何Windows头文件(比如windows.h)之前,添加以下宏定义:
#define _WIN32_WINNT 0x0A00 // 对应Windows 10,若需适配Win11可设为0x0B00 #include <windows.h>
2. 在编译命令中添加宏参数
直接在gcc编译命令里加入-D_WIN32_WINNT=0x0A00,修改后的命令如下:
gcc -x c++ -D_WIN32_WINNT=0x0A00 ./main.h ./main.cpp -o ./app -mwindows -municode -luser32 -lgdi32 -lkernel32
额外注意
如果以上方法仍无效,请检查你的MinGW-w64版本是否过旧——过老的版本可能未包含该API的声明,建议更新到最新稳定版。
内容的提问来源于stack exchange,提问作者thebluetropics
相关产品推荐
相关产品推荐

