【问题标题】:Error using GetModuleFileNameExA function in Qt在 Qt 中使用 GetModuleFileNameExA 函数时出错
【发布时间】:2020-08-30 03:52:45
【问题描述】:
#include <iostream>
#include <windows.h>
#include <psapi.h>
#include <tlhelp32.h>

    HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, 7632);
    wchar_t lpFilename[1024];
    GetModuleFileNameExW(hProcess, NULL, lpFilename, sizeof(lpFilename));
    qDebug() << QString::fromWCharArray(lpFilename);
    CloseHandle(hProcess);

以上代码在vs2019中运行正常,但是我在qt中使用错误,出现这个错误:

error: undefined reference to `GetModuleFileNameExA'
error: ld returned 1 exit status

【问题讨论】:

  • 查看remarks 获取GetModuleFileNameExA,特别是关于PSAPI_VERSION 的部分以及要链接的.lib
  • 您不需要PROCESS_ALL_ACCESS(如documented)。但是您确实需要调用 Unicode API。除非您对有时不会失败的实现感到满意。

标签: qt winapi


【解决方案1】:

需要加载Psapi.lib

添加&lt;project name&gt;.pro文件

...

LIBS += \
    -lPsapi

...

【讨论】:

  • 你根本不需要使用GetModuleFileNameExA。这对您的目标来说是错误的 api。你需要使用QueryFullProcessImageName
猜你喜欢
  • 1970-01-01
  • 2014-08-25
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-06
  • 2021-01-15
  • 2015-07-01
相关资源
最近更新 更多