在XP系统上出现无法定位程序输入点 K32GetProcessMemoryInfo的解决方案_服务器其它

VC2012升级补丁5.0之后,编译出来的程序发现在XP系统无法定位程序输入点 K32GetProcessMemoryInfo于动态链接库kernel32.dll之上。

之前程序一直在XP上安装正常,今天测试组的同事突然发现,新发布的版本不能在XP上使用,这个问题比较奇怪,因为以往的版本都是没有问题的。为什么会突然出现这个问题呢?一开始就去查找是否所有工程都使用V110_XP来编译,找完所有工程都没出错。最后才想到近来升级VC2012的Update5.0的补丁,再打包编译之后,才发现XP的电脑不能使用了。

经过查找分析,发现是如下问题:

这是由于GetProcessMemoryInfo在不同系统版本号不同导致的,官方说明如下:

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")

看来微软已经不支持XP系统了,因此所有发布的新版本软件已经不再测试XP的兼容性了。看来明年,也需要转向不支持XP系统了,否则需要投入的测试成本和维护成本急剧上升中,需要全面转向WIN7和WIN10系统的支持。有此可见,生态系统就是这么重要的事情,可以左右大局。

时间: 2024-10-05 14:16:00

在XP系统上出现无法定位程序输入点 K32GetProcessMemoryInfo的解决方案_服务器其它的相关文章

系统-无法定位程序输入点 inet_ntop 于动态链接库 ws2_32.dll

问题描述 无法定位程序输入点 inet_ntop 于动态链接库 ws2_32.dll 用VC2012 更新了Update 1 包, Visual Studio 2012 - Windows XP (v110_xp) 也选上了..生成的exe文件在win7系统上能运行,可是放到xp系统运行就出错了,"无法定位程序输入点 inet_ntop 于动态链接库 ws2_32." 用的是cocos2d-x3.2,在Cocos Code IDE导出frameworks 那位大神可以帮帮忙找找问题呀?

无法定位程序输入点 CreateUri 于动态链接库 urlmon.dll 上。

笔记本换成XP系统后,打开风行的时候,回报下面的错误: --------------------------- Msg: FunshionWeb.exe - 无法找到入口 --------------------------- 无法定位程序输入点 CreateUri 于动态链接库 urlmon.dll 上. --------------------------- 确定 --------------------------- 解决方法: 打开开始--运行 输入msconfig回车 打开启动选项卡

无法定位程序输入点_except_handler4_common于动态链接库msvcrt.dll上

最近,多种软件都出现了一个启动时的错误提示 "无法定位程序输入点_except_handler4_common于动态链接库msvcrt.dll上". 出现这个提示情况是:Windows Xp 系统: 软件包括:window live writer 2009, windows messenger 2009, firefox 3.5 等非常新的版本. 这个提示出现后,点击确定,并不影响程序的使用.这个问题出现的原因,其实微软自己的问题.可谓是微软的Vista 后遗症吧. 在 Vista 系

无法定位程序输入点 msvcr100.dll的解决办法

无法定位程序输入点 msvcr100.dll的原因:用户在安装运行游戏模拟器时,由于缺少程序语言编译环境(VC2010运行库),造成游戏模拟器或其他软件无法进行程序 编译调试,系统将提示"出现无法定位程序输入点×××于动态链接库msvcr100.dll上"或提示"没有找到msvcr100.dll,因此这个程序 未能启动...": 无法定位程序输入点 msvcr100.dll的解决办法: 下载安装Microsoft Visual C++ 2010(VC2010运行库)

开机提示:无法定位程序输入点...CommFunc.dll

  故障现象: 电脑开机后提示报错"无法定位程序输入点GetNuanceRelatedData于动态链接库CommFunc.dll上" 原因分析: 系统遭到病毒或木马感染导致,操作失败导致dll文件丢失,升级部分软件导致出现该问题 . 解决方案: 下载安装主流杀毒软件(NOD32.卡巴斯基.小红伞.Avast.McAfee.诺顿.瑞星.金山毒霸等),更新病毒库之后全盘杀毒.系统重启后还是有报错按照下面操作. 1. 通过百度下载需要的CommFunc.dll文件; 2. 重新启动电脑,按

电脑开机提示:无法定位程序输入点Get Nuance Related Data于动态链接库CommFunc.dll怎么办

在我们电脑开机进入系统时出现如下错误提示 原因分析: 出现无法定位程序输入点Get Nuance Related Data于动态链接库CommFunc.dll有可能是因为系统中毒导致文件丢失或破坏了哦,我们只要查杀病毒就可以解决了. 解决办法 我们可以下载一个杀毒软件进行杀毒了,像现在的360杀毒或者360卫士都非常的不错哦,大家自行下载安装杀毒吧. 1. 现在我们百度搜索一个 CommFunc.dll文件: 2. 然后我们下载到桌面或等会可以找到的位置之后 重新启动电脑,按F8键,进入安全模式

图片-vs2010软件在调试时无法定位程序输入点

问题描述 vs2010软件在调试时无法定位程序输入点 5C 解决方案 图片打不开了,你的程序是exe还是dll,dll要指定加载进程exe 解决方案二: 看下是不是bug模式 解决方案三: 看看启动项目 是不是当前项目

vs-无法定位程序输入点mxCreateDoubleMatrix_730于动态链接库libmx.dll上

问题描述 无法定位程序输入点mxCreateDoubleMatrix_730于动态链接库libmx.dll上 本人在vs2008中调用matlab时,出现无法定位程序输入点mxCreateDoubleMatrix_730于动态链接库libmx.dll上的问题,有谁知道怎么解决吗?谢谢 解决方案 原因:matlab2010a版本的环境变量出现了问题.libmx.dll是存在于D:/Program Files/MATLAB/R2010a/bin/win32文件夹中,而在Win7系统变量里Matlab

win32-在devc++写的程序在xp系统上运行 提示不是有效的32位程序 请问是怎么回事?

问题描述 在devc++写的程序在xp系统上运行 提示不是有效的32位程序 请问是怎么回事? 源码如下 #include <stdio.h> #include <windows.h> #include <mmsystem.h> #include <Winable.h> #pragma comment(lib, "winmm.lib") int main() { PlaySound (TEXT("Light.wav"),