我一直在尝试使用psapi.h库在Microsoft Visual C ++ 6.0中编译exe,但我不断收到此错误;
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进行编译,那就太棒了!
答案 0 :(得分:1)
直接从microsoft获取windows或platform sdk,它们不应该有任何死链接。如果做不到这一点,请下载Visual Studio 08或更高版本,看它是否安装了lib&标题(我和你有完全相同的问题,我通过从Visual Studio 2008附带的windows sdk复制lib和标题来解决它)。
答案 1 :(得分:0)
如果VC ++ 6.0附带的SDK中不包含psapi.h,那么您应该更新编译器,尝试使用旧的工具链的新SDK。在 VC ++ 6.0之后发布的Windows版本支持PSAPI。
无论哪种方式,头文件本身都无法解决您的问题;您还需要适当的导出库和DLL。
答案 2 :(得分:0)
最新版本的Platform SDK与Visual C ++ 6.0不兼容 - 几年前支持该编译器。如果你没有获得SDK,那么我恐怕你运气不好。微软并不害怕过时的东西并彻底消除它们。
答案 3 :(得分:0)
这对我有用:
/*
* 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;
}