2012-03-06 40 views
2

我想在C中获取进程内存信息。我在Windows XP上使用Cygwin和GCC 4.5。我包含#include <psapi.h>并在构建程序时使用-lpsapi。 我得到的错误获取进程中的内存信息C

undefined reference to [email protected] 

请告诉正确的方式来获得内存的C.进程信息我读了this question,但它不是我的问题帮助。

我使用的代码。

#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; 
} 

欢迎回答与建议。

+1

有一次,我有这个问题,因为我使用-l早于具有主函数的.c文件的名称。 – Pyjong 2012-03-06 07:05:54

+2

@stupid_idiot可能是对的。请显示您用来构建程序的命令行。 – 2012-03-06 07:09:49

+3

[This](http://justinsboringpage.blogspot.com/2009_05_14_archive.html)和[this](http://old.nabble.com/Build-problems-on-MinGW-td21445405.html)建议订单命令行中的'-lpsapi'很重要。尝试把它放在最后。 – 2012-03-06 07:50:39

回答

1

Thisthis建议命令行中-lpsapi的顺序很重要。尝试把它放在最后。