Скомпилируйте исполняемый файл в Microsoft Visual C ++ 6.0, используя psapi.h - PullRequest
2 голосов
/ 30 декабря 2010

Я пытался скомпилировать исполняемый файл в Microsoft Visual C ++ 6.0 с использованием библиотеки psapi.h, но я продолжаю получать эту ошибку;

fatal error C1083: Cannot open include file: 'psapi.h': No such file or directory Error executing cl.exe.

Я просмотрел весь интернет, нашел много постов, в которых мне предлагается загрузить и установить версии Windows SDK.Однако все эти ссылки были мертвы.Если бы кто-нибудь мог мне помочь, хотя настраивал Microsoft Visual C ++ 6.0 так, чтобы он мог компилироваться с помощью psapi.h, это было бы здорово!

Ответы [ 4 ]

1 голос
/ 30 декабря 2010

Получите Windows или SDK платформы непосредственно от Microsoft, у них не должно быть мертвых ссылок. В противном случае скачайте Visual Studio 08 или выше и посмотрите, устанавливает ли он lib & header (у меня была точно такая же проблема, как и у вас, я решил ее, скопировав lib и header из Windows SDK, с которой поставляется Visual Studio 2008).

0 голосов
/ 02 декабря 2013

Это работает для меня:

/*
 * Simple utility to call GetProcessMemoryInfo without having 
 * to compile or link with psapi.h / psapi.lib.
 */

typedef struct {
   DWORD cb;
   DWORD PageFaultCount;
   DWORD PeakWorkingSetSize;
   DWORD WorkingSetSize;
   DWORD QuotaPeakPagedPoolUsage;
   DWORD QuotaPagedPoolUsage;
   DWORD QuotaPeakNonPagedPoolUsage;
   DWORD QuotaNonPagedPoolUsage;
   DWORD PagefileUsage;
   DWORD PeakPagefileUsage;
} PROCESS_MEMORY_COUNTERS;

#define Win32MemArgs HANDLE, PROCESS_MEMORY_COUNTERS *, DWORD

extern BOOL WINAPI GetProcessMemoryInfo( Win32MemArgs );

typedef BOOL (WINAPI *GetMemInfo)( Win32MemArgs );

PROCESS_MEMORY_COUNTERS GetMemInfo()
{
    PROCESS_MEMORY_COUNTERS pmc;
    HANDLE                  hProc;
    char                   *pf;
    BOOL                    bOK;
    static HINSTANCE        _hLib = (HINSTANCE)0;
    static GetMemInfo       _fcn  = (GetMemInfo)0;

    /*
     * Dynamically Load library (once)
     */
    if ( !_hLib && (_hLib=::LoadLibrary( "psapi.dll" )) ) {
        pf   = "GetProcessMemoryInfo";
        _fcn = (BOOL (WINAPI *)( Win32MemArgs ))::GetProcAddress( _hLib, pf );
    }

    /*
     * Call fcn
     */
    bOK = FALSE
    if ( _fcn && (hProc=::GetCurrentProcess()) )
        bOK = (*_fcn)( hProc, &pmc, sizeof( pmc ) );
    }
    if ( !bOK )
       memset( &pmc, 0, sizeof( pmc ) );
    return pmc;
}
0 голосов
/ 30 декабря 2010

Последние версии Platform SDK несовместимы с Visual C ++ 6.0 - поддержка этого компилятора прекратилась много лет назад.Если вы не вернули SDK, когда он был доступен, боюсь, вам не повезло.Microsoft не стесняется устаревших вещей и их полного уничтожения.

0 голосов
/ 30 декабря 2010

Если psapi.h не включен в SDK, включенный в VC ++ 6.0, то вам, вероятно, лучше обновить ваш компилятор, который пытается использовать новый SDK со старой цепочкой инструментов.PSAPI поддерживается в версиях Windows, выпущенных после VC ++ 6.0.

В любом случае, один только заголовочный файл не решит вашу проблему;Вам также понадобится соответствующая библиотека экспорта и DLL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...