2
私はプロセスメモリ情報をCで取得したいと思っています。Windows XPではGCC 4.5でCygwinを使用しています。私は#include <psapi.h>
を含み、プログラムをビルドするときに-lpsapi
を使用します。 私はエラーCでプロセスメモリ情報を取得
undefined reference to [email protected]
を取得し、私はthis questionを読んで、それは私の問題を手伝っていないC.にメモリのプロセス情報を取得するための正しい方法を教えてください。
私はコードを使用します。
#include <windows.h>
#include <stdio.h>
#include <psapi.h>
void PrintMemoryInfo(DWORD processID)
{
HANDLE hProcess;
PROCESS_MEMORY_COUNTERS pmc;
// Print the process identifier.
printf("\nProcess ID: %u\n", processID);
getchar();
// Print information about the memory usage of the process.
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE,
processID);
if (NULL == hProcess)
return;
if (GetProcessMemoryInfo(hProcess, &pmc, sizeof(pmc)))
{
printf("\tPageFaultCount: 0x%08X\n", pmc.PageFaultCount);
printf("\tYour app's PEAK MEMORY CONSUMPTION: 0x%08X\n",
pmc.PeakWorkingSetSize);
printf("\tYour app's CURRENT MEMORY CONSUMPTION: 0x%08X\n", pmc.WorkingSetSize);
printf("\tQuotaPeakPagedPoolUsage: 0x%08X\n",
pmc.QuotaPeakPagedPoolUsage);
printf("\tQuotaPagedPoolUsage: 0x%08X\n",
pmc.QuotaPagedPoolUsage);
printf("\tQuotaPeakNonPagedPoolUsage: 0x%08X\n",
pmc.QuotaPeakNonPagedPoolUsage);
printf("\tQuotaNonPagedPoolUsage: 0x%08X\n",
pmc.QuotaNonPagedPoolUsage);
printf("\tPagefileUsage: 0x%08X\n", pmc.PagefileUsage);
printf("\tPeakPagefileUsage: 0x%08X\n",
pmc.PeakPagefileUsage);
}
CloseHandle(hProcess);
}
int main()
{
PrintMemoryInfo(GetCurrentProcessId());
return 0;
}
回答と提案は大歓迎です。
この問題は、主な機能を持つ.cファイルの名前よりも早く-lを使用したために発生しました。 – Pyjong
@stupid_idiotはおそらく正しいです。プログラムのビルドに使用するコマンドラインを表示してください。 –
[This](http://justinsboringpage.blogspot.com/2009_05_14_archive.html)と[this](http://old.nabble.com/Build-problems-on-MinGW-td21445405.html)は、コマンドラインで '-lpsapi'を実行することは重要です。最後に配置してみてください。 –