使用MinGW g++9.2编译olcPixelGameEngine时dwmapi.h缺失求助
嘿,我发现你现在遇到两个关键问题:一是误用了Linux平台的编译命令在Windows的MinGW环境下,二是找不到dwmapi.h头文件。咱们一步步来解决:
先把编译命令改对
你当前用的g++ -o YourProgName YourSource.cpp -lX11 -lGL -lpthread -lpng -lstdc++fs -std=c++17是给Linux系统设计的编译参数,Windows下的MinGW根本不存在X11、GL这类Linux专属库,直接用这个命令肯定会出问题。针对MinGW,你得换成Windows平台的链接库,试试这个命令:
g++ -o YourProgName YourSource.cpp -std=c++17 -lgdi32 -luser32 -lkernel32 -lpng -lstdc++fs
搞定dwmapi.h: No such file or directory错误
dwmapi.h是Windows系统中控制桌面窗口管理器的头文件,属于Windows API的一部分,MinGW默认应该自带,但可能你的组件没装全或者路径配置有问题:
检查并补全MinGW组件
打开MinGW安装管理器,确认是否安装了mingw32-win32api-dev组件——它包含了几乎所有Windows系统的头文件和库。如果没装,勾选这个组件,点击「Installation」→「Apply Changes」完成安装即可。确认头文件路径并手动指定(如果需要)
找到你的MinGW安装目录(比如C:\MinGW),进入mingw32\include文件夹看看有没有dwmapi.h。如果文件存在但编译时找不到,就用-I参数手动指定这个路径:g++ -o YourProgName YourSource.cpp -I"C:\MinGW\mingw32\include" -std=c++17 -lgdi32 -luser32 -lkernel32 -lpng -lstdc++fs如果文件夹里压根没有
dwmapi.h,说明你的Win32 API组件没装全,回到第一步重新安装对应组件就行。如果你用的是MinGW-w64
要是你装的是MinGW-w64(和旧版MinGW不是同一工具),得确保安装时勾选了包含win32api的选项。它的头文件路径一般是C:\mingw-w64\x86_64-xxx-win32-seh\include(xxx替换成你的具体版本号),同样可以用-I参数把这个路径加入编译命令。
内容的提问来源于stack exchange,提问作者biskit

