在XP系統(tǒng)上出現(xiàn)無(wú)法定位程序輸入點(diǎn) K32GetProcessMemoryInfo的解決方案
VC2012升級(jí)補(bǔ)丁5.0之后,編譯出來(lái)的程序發(fā)現(xiàn)在XP系統(tǒng)無(wú)法定位程序輸入點(diǎn) K32GetProcessMemoryInfo于動(dòng)態(tài)鏈接庫(kù)kernel32.dll之上。
之前程序一直在XP上安裝正常,今天測(cè)試組的同事突然發(fā)現(xiàn),新發(fā)布的版本不能在XP上使用,這個(gè)問(wèn)題比較奇怪,因?yàn)橐酝陌姹径际菦](méi)有問(wèn)題的。為什么會(huì)突然出現(xiàn)這個(gè)問(wèn)題呢?一開(kāi)始就去查找是否所有工程都使用V110_XP來(lái)編譯,找完所有工程都沒(méi)出錯(cuò)。最后才想到近來(lái)升級(jí)VC2012的Update5.0的補(bǔ)丁,再打包編譯之后,才發(fā)現(xiàn)XP的電腦不能使用了。
經(jīng)過(guò)查找分析,發(fā)現(xiàn)是如下問(wèn)題:
這是由于GetProcessMemoryInfo在不同系統(tǒng)版本號(hào)不同導(dǎo)致的,官方說(shuō)明如下:
Remarks
Starting with Windows 7 and Windows Server 2008 R2, Psapi.h establishes version numbers for the PSAPI functions. The PSAPI version number affects the name used to call the function and the library that a program must load.
If PSAPI_VERSION is 2 or greater, this function is defined as K32GetProcessMemoryInfo in Psapi.h and exported in Kernel32.lib and Kernel32.dll. If PSAPI_VERSION is 1, this function is defined as GetProcessMemoryInfo in Psapi.h and exported in Psapi.lib and Psapi.dll as a wrapper that calls K32GetProcessMemoryInfo.
Programs that must run on earlier versions of Windows as well as Windows 7 and later versions should always call this function as GetProcessMemoryInfo. To ensure correct resolution of symbols, add Psapi.lib to the TARGETLIBS macro and compile the program with -DPSAPI_VERSION=1. To use run-time dynamic linking, load Psapi.dll.
解決方案如下:
只需要在#include <psapi.h>引用前添加
#ifndef PSAPI_VERSION
#define PSAPI_VERSION 1
#endif
#include <psapi.h>
#pragma comment(lib,"Psapi.lib")
看來(lái)微軟已經(jīng)不支持XP系統(tǒng)了,因此所有發(fā)布的新版本軟件已經(jīng)不再測(cè)試XP的兼容性了??磥?lái)明年,也需要轉(zhuǎn)向不支持XP系統(tǒng)了,否則需要投入的測(cè)試成本和維護(hù)成本急劇上升中,需要全面轉(zhuǎn)向WIN7和WIN10系統(tǒng)的支持。有此可見(jiàn),生態(tài)系統(tǒng)就是這么重要的事情,可以左右大局。
相關(guān)文章
cwRsync 錯(cuò)誤 uid/gid 4294967295 (-1) is impossible to set on
今天在同步文件的時(shí)候,因?yàn)橛昧?.3的新版本,出現(xiàn)了這個(gè)問(wèn)題,cwRsync 錯(cuò)誤 uid/gid 4294967295 (-1) is impossible to set on,后來(lái)參考下面的方法解決了,特分享一下方便需要的朋友2016-08-08
服務(wù)器Apache與Tomcat和Nginx的理解和對(duì)比分析詳解
今天小編就為大家分享一篇關(guān)于服務(wù)器Apache與Tomcat和Nginx的理解和對(duì)比分析詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04
http狀態(tài)碼匯總及問(wèn)題經(jīng)驗(yàn)總結(jié)
網(wǎng)站的http狀態(tài)對(duì)于網(wǎng)站維護(hù)人員來(lái)說(shuō)是相當(dāng)重要的,當(dāng)網(wǎng)站出現(xiàn)問(wèn)題的時(shí)候,我們首先要診斷一下網(wǎng)站的http狀態(tài),從而進(jìn)一步確認(rèn)哪里出現(xiàn)的問(wèn)題2013-11-11
TCP socket SYN隊(duì)列和Accept隊(duì)列區(qū)別原理解析
這篇文章主要介紹了TCP socket SYN隊(duì)列和Accept隊(duì)列區(qū)別原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12
dell 服務(wù)器開(kāi)機(jī)總是提示按F1才能進(jìn)入系統(tǒng)解決方法
這篇文章主要介紹了dell 服務(wù)器開(kāi)機(jī)總是提示按F1才能進(jìn)系統(tǒng)解決方法,不過(guò)提示上面一般都會(huì)有具體的提示信息,這里簡(jiǎn)單分享一下,需要的朋友可以參考下2016-04-04
rsync備份時(shí)自動(dòng)創(chuàng)建目錄的方法
這篇文章主要介紹了rsync備份時(shí)自動(dòng)創(chuàng)建目錄的方法,本文使用rsync 中的 -R 參數(shù)(-R, --relative use relative path names)解決自動(dòng)創(chuàng)建目錄問(wèn)題,需要的朋友可以參考下2015-01-01
windows server 2003郵箱服務(wù)器安裝教程
這篇文章主要為大家詳細(xì)介紹了windows server 2003郵箱服務(wù)器的安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04

