【发布时间】: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 并将其添加到其他标志框,我收到相同的错误消息。我做得对吗?