在XP系统上出现无法定位程序输入点 K32GetProcessMemoryInfo的解决方案

 更新时间:2015年09月23日 11:08:20   投稿:mrr  
VC2012升级补丁5.0之后,编译出来的程序发现在XP系统无法定位程序输入点 K32GetProcessMemoryInfo于动态链接库kernel32.dll之上。经过一番折腾,此问题解决,下面把我的解决方案总结分享给大家

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系统的支持。有此可见,生态系统就是这么重要的事情,可以左右大局。

相关文章

  • cwRsync 错误 uid/gid 4294967295 (-1) is impossible to set on

    cwRsync 错误 uid/gid 4294967295 (-1) is impossible to set on

    今天在同步文件的时候,因为用了4.3的新版本,出现了这个问题,cwRsync 错误 uid/gid 4294967295 (-1) is impossible to set on,后来参考下面的方法解决了,特分享一下方便需要的朋友
    2016-08-08
  • 阿里云mysql空间清理的方法

    阿里云mysql空间清理的方法

    今天小编就为大家分享一篇关于阿里云mysql空间清理的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 服务器Apache与Tomcat和Nginx的理解和对比分析详解

    服务器Apache与Tomcat和Nginx的理解和对比分析详解

    今天小编就为大家分享一篇关于服务器Apache与Tomcat和Nginx的理解和对比分析详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • Hadoop部署的基础设施操作详解

    Hadoop部署的基础设施操作详解

    这篇文章主要为大家介绍了Hadoop部署的基础设施操作详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • http状态码汇总及问题经验总结

    http状态码汇总及问题经验总结

    网站的http状态对于网站维护人员来说是相当重要的,当网站出现问题的时候,我们首先要诊断一下网站的http状态,从而进一步确认哪里出现的问题
    2013-11-11
  • TCP socket SYN队列和Accept队列区别原理解析

    TCP socket SYN队列和Accept队列区别原理解析

    这篇文章主要介绍了TCP socket SYN队列和Accept队列区别原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • dell 服务器开机总是提示按F1才能进入系统解决方法

    dell 服务器开机总是提示按F1才能进入系统解决方法

    这篇文章主要介绍了dell 服务器开机总是提示按F1才能进系统解决方法,不过提示上面一般都会有具体的提示信息,这里简单分享一下,需要的朋友可以参考下
    2016-04-04
  • rsync备份时自动创建目录的方法

    rsync备份时自动创建目录的方法

    这篇文章主要介绍了rsync备份时自动创建目录的方法,本文使用rsync 中的 -R 参数(-R, --relative use relative path names)解决自动创建目录问题,需要的朋友可以参考下
    2015-01-01
  • windows server 2003邮箱服务器安装教程

    windows server 2003邮箱服务器安装教程

    这篇文章主要为大家详细介绍了windows server 2003邮箱服务器的安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • LSI SAS1068 RAID 阵列卡图文配置教程

    LSI SAS1068 RAID 阵列卡图文配置教程

    这篇文章主要介绍了LSI SAS1068 RAID 阵列卡图文配置教程,需要的朋友可以参考下
    2016-06-06

最新评论