MinGW编译报错:'QueryFullProcessImageNameA'未在此作用域声明如何解决?
该编译错误的原因是QueryFullProcessImageNameA为Windows Vista及以上版本才提供的API,MinGW默认的头文件配置不会暴露Vista及以上版本新增的API接口。
解决方案
- 优先使用版本声明方案:在所有Windows相关头文件引入的最靠前位置,添加目标Windows版本声明宏
// 0x0600 对应 Windows Vista 版本,满足Windows 10运行要求 #define _WIN32_WINNT 0x0600 #define WINVER 0x0600 #include <windows.h> #include <psapi.h>
- 确认编译参数配置:编译指令末尾需要添加链接参数
-lpsapi,否则会出现链接阶段未定义引用错误。 - 旧版MinGW兼容方案:如果添加宏定义后依然报错,说明你使用的MinGW版本过旧缺少该API的声明,可以手动在代码中补充该API的声明,放在函数调用位置之前即可:
extern "C" BOOL WINAPI QueryFullProcessImageNameA(HANDLE hProcess, DWORD dwFlags, LPSTR lpExeName, PDWORD lpdwSize);
内容的提问来源于stack exchange,提问作者H4ZE
相关产品推荐
相关产品推荐

