【问题标题】:C++ erro:undefined reference to `EnumProcesses@12C++ 错误:未定义对 `EnumProcesses@12 的引用
【发布时间】:2013-08-26 15:38:57
【问题描述】:

我正在尝试使用EnumProcesses 获取正在运行的进程列表。

但是,当我尝试编译时,我收到了这个异常:

Undefined reference to `EnumProcesses@12'

我正在使用 eclipse Mingw 和 XP。

我尝试添加-lpsapi 选项,但似乎不起作用。

这是我正在使用的代码:

#include <iostream>
#include <windows.h>
#include <psapi.h>

int main() {
    DWORD pid[100], bytesr;
    EnumProcesses(pid, sizeof(pid), &bytesr);
    return 0;
}

【问题讨论】:

  • 阅读sscce.org,然后更新您的问题,向我们展示出现问题的代码。
  • 看来,您没有链接到具有此功能的库。它可能在kernel32.dll 中(无论如何你都应该与之链接),但它也可能在psapi.dll 中。从psapi.h 检查PSAPI_VERSION。如果是1,你应该链接到psapi.dll
  • 谢谢,我更新了第一篇文章,我会按照你的指示尝试。
  • 您是否在命令行的正确位置指定-lpsapi? MinGW 链接器要求提供函数的库需要它们的对象/库之后指定,即您可能应该将选项放在非常接近命令行末尾的位置。
  • 我不确定我是否正确。我从 eclipse project->propeties->GCC C++ Compiler->miscellaneous 添加了 -lpsapi 并将其添加到其他标志框,我收到相同的错误消息。我做得对吗?

标签: c++ eclipse process


【解决方案1】:

只是澄清一下,因为这对初学者来说可能有点混乱。

对于 Qt,您需要将其添加到您的 .pro 文件中

win32:LIBS += -lpsapi

另一个例子是将 kernel32 库添加到你的项目中,使用:

win32:LIBS += -lkernel32

希望这可以帮助某人

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2014-02-17
    • 2010-10-31
    • 1970-01-01
    • 2022-11-04
    相关资源
    最近更新 更多