【发布时间】:2019-08-03 13:23:18
【问题描述】:
我正在开发一个程序,该程序将监控所选程序的使用情况并将其记录到 .csv 文件中。这样,当我全屏运行游戏时,我可以确定哪些程序占用了特定资源的最多。我已经像这样包含了 psapi 标头:
...
#include <psapi.h>
...
我使用 MinGW 的 G++ 编译,并为我正在使用的函数提供以下选项和必要的库(库来自函数的文档):g++ -lkernel32 -lpsapi test.cpp -o test.exe
但它仍然抛出错误:
c:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../mingw32/bin/ld.exe: C:\Users\james\AppData\Local\Temp\cclpYDm2.o:test.cpp:(.text+0x3e7): undefined reference to `GetProcessMemoryInfo@12'
collect2.exe: error: ld returned 1 exit status
我觉得要么是我的图书馆出了问题,要么是我做错了什么。我试过用“extern“C””包围标题,但我仍然得到相同的确切消息。我还验证了该库是否存在;如果没有,编译器会抛出一个不同的错误。 #pragma comment 也不起作用,使用 -static 标志无效。我还尝试定义 PSAPI_VERSION 宏并将其设置为 1,将其放在 psapi 的 include 语句之前。
TL;DR:尽管有正确的库,编译器仍会引发未定义的引用错误。我怀疑是:
- 库安装不正确
- 我在链接时出错了
【问题讨论】:
-
对于将其标记为重复的人,您能告诉我这与什么答案有关吗?谢谢。
-
尝试链接
kernel32.lib -
谢谢,但不幸的是,无论是否包含 psapi 的库,它仍然抛出相同的错误。
-
@Jamesthe1 好吧,您似乎错过了链接包含
GetProcessMemoryInfo()实现的库(我猜这是Windows SDK 的一部分)。很明显,是我将其标记为重复 BTW。 -
@πάνταῥεῖ 你能重新打开这个问题吗?您链接到的高度通用的帖子中没有解决方案,我已经描述了它的不同之处。
标签: c++ g++ mingw linker-errors psapi