在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)文章
CentOS環(huán)境下單獨(dú)安裝apachebench的方法
這篇文章主要介紹了CentOS環(huán)境下單獨(dú)安裝apachebench的方法,分析了apachebench的安裝步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-10-10關(guān)于HTTPS端口443的技術(shù)講解(什么是443端口)
本文將重點(diǎn)介紹HTTPS 443端口,它是如何工作的,它保護(hù)什么,以及為什么我們需要它,需要的朋友可以參考下2022-10-10如何通過(guò)網(wǎng)頁(yè)方式將jar包上傳到nexus的方法步驟
這篇文章主要介紹了如何通過(guò)網(wǎng)頁(yè)方式將jar包上傳到nexus的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12git沖突解決_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了git沖突解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08FileZilla Server搭建FTP服務(wù)器配置及425錯(cuò)誤與TLS警告解決方法詳解
本文詳細(xì)講解了FileZilla Server搭建FTP服務(wù)器配置以及425 Can't open data,You appear to be behind a NAT router,FTP over TLS is not enabled等相關(guān)問(wèn)題的解決方法2018-10-10Windows10 1903錯(cuò)誤0xc0000135解決方案【推薦】
windows10 1903是2019年Mircosoft推出的最新版windows操作系統(tǒng),但是有很多機(jī)器裝上之后會(huì)存在不支持.net framework的現(xiàn)象,因此在這里,筆者為大家?guī)?lái)了解決該問(wèn)題簡(jiǎn)單好用的方案,需要的朋友可以參考下2019-10-10