MinGW-w64-UCRT中仅存shellscalingapi.h时,如何获取对应库?
解决
SetProcessDpiAwareness未定义引用问题 你遇到的不是缺失库文件,而是编译时未链接到包含该函数的系统库。SetProcessDpiAwareness属于Windows的shell32库,MinGW-w64已自带对应的导入库,只需在编译时显式指定链接它即可。
具体解决步骤
- 直接用命令行编译:添加链接参数
-lshell32,完整命令示例:g++ your_code.cpp -o your_program.exe -lshell32 - VS Code配置编译任务:在
.vscode/tasks.json的args数组中加入"-lshell32",示例配置如下:{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: g++.exe 生成活动文件", "command": "C:/msys64/ucrt64/bin/g++.exe", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe", "-lshell32" // 新增该参数 ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": ["$gcc"], "group": { "kind": "build", "isDefault": true }, "detail": "编译器: C:/msys64/ucrt64/bin/g++.exe" } ] }
补充说明
MinGW-w64的ucrt64环境中,shell32的导入库是libshell32.a,位于C:\msys64\ucrt64\lib目录下。你之前递归搜索没找到,大概率是搜索范围或文件名匹配的问题,但只要添加-lshell32参数,编译器会自动定位并链接该库。
内容的提问来源于stack exchange,提问作者Tech of the Absence
相关产品推荐
相关产品推荐

