目前遇到的问题是Winsock.h已经包含在我项目中其他地方的头文件中......
未直接包含标题:
# if defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
# error WinSock.h has already been included
# endif // defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
因此,当我尝试构建时,我收到错误“C1189已经包含Winsock.h”(来自上面代码段中定义的错误消息)。
但是,我需要能够使用parts of the PSAPI来获取有关当前进程的内存使用情况信息。我试图将其包含在我的其他文件中......
我的.cpp文件:
#include <Windows.h>
#include <Psapi.h>
...
SIZE_T getMemoryInfo() { // The function that needs the includes
PROCESS_MEMORY_COUNTERS pmc;
SIZE_T memoryUsed;
GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc));
memoryUsed = pmc.WorkingSetSize;
return memoryUsed;
}
在研究之后我尝试使用WIN32_LEAN_AND_MEAN试图摆脱Winsock.h包含,这有效,但是现在当我尝试使用PROCESS_MEMORY COUNTERS时,我得到一个未定义的符号错误...
“LNK2019未解析的外部符号GetProcessMemoryInfo在函数中引用...”和“LNK1120 1未解析的外部[在myFile中]”
我希望我需要弄清楚如何包含我需要的实际头文件but the Windows docs do not say(和Wikipedia说大多数子标头都不能单独包含,所以这可能是一个问题)。
#define WIN32_LEAN_AND_MEAN
#include <Windows.h> // Windows specific libraries for collecting software metrics.
#include <Psapi.h>
我一直在努力想出这一整天,任何帮助都会受到赞赏,因为Windows Docs非常无益,而且我非常沮丧。如果这是一个愚蠢的问题,我道歉,但我经常与包括挣扎。
答案 0 :(得分:1)
终于明白了。
显然,psapi.lib并没有被Visual Studio自动链接(尽管Windows util libs是......)。您必须进入属性/链接器/输入并手动将库添加为依赖项。如果找不到库位置,请在C / C ++中手动添加目录作为搜索目录。
你也必须拥有#define WIN32_LEAN_AND_MEAN。
希望有帮助,如果将来有人需要帮助,请在这里发表评论。
解决方案归功于@RbMn和@Scheff,谢谢你们!