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

相关文章

  • CentOS环境下单独安装apachebench的方法

    CentOS环境下单独安装apachebench的方法

    这篇文章主要介绍了CentOS环境下单独安装apachebench的方法,分析了apachebench的安装步骤与相关注意事项,需要的朋友可以参考下
    2016-10-10
  • 关于HTTPS端口443的技术讲解(什么是443端口)

    关于HTTPS端口443的技术讲解(什么是443端口)

    本文将重点介绍HTTPS 443端口,它是如何工作的,它保护什么,以及为什么我们需要它,需要的朋友可以参考下
    2022-10-10
  • Win2008 蓝屏漏洞揭秘

    Win2008 蓝屏漏洞揭秘

    蓝屏漏洞威胁的是服务器操作系统Windows Server 2008,这意味着如果Windows Server 2008蓝屏,将导致服务器停止服务……
    2009-10-10
  • 图解SVN服务器搭建和使用(一)

    图解SVN服务器搭建和使用(一)

    SVN全称SubVersion,svn是一个优秀的版本控制工具,是一个自由/开源的版本控制系统,一组文件存放在中心版本库,记录每一次文件和目录的修改。最近有很多网友问我svn服务怎么搭建和使用?下面小编抽个时间把这个问题给大家解决了,有需要的朋友可以参考下。
    2015-09-09
  • 如何通过网页方式将jar包上传到nexus的方法步骤

    如何通过网页方式将jar包上传到nexus的方法步骤

    这篇文章主要介绍了如何通过网页方式将jar包上传到nexus的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • git冲突解决_动力节点Java学院整理

    git冲突解决_动力节点Java学院整理

    这篇文章主要介绍了git冲突解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • ElasticSearch事件查询语言EQL操作

    ElasticSearch事件查询语言EQL操作

    这篇文章主要为大家介绍了ElasticSearch事件查询语言EQL操作,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • FileZilla Server搭建FTP服务器配置及425错误与TLS警告解决方法详解

    FileZilla Server搭建FTP服务器配置及425错误与TLS警告解决方法详解

    本文详细讲解了FileZilla Server搭建FTP服务器配置以及425 Can't open data,You appear to be behind a NAT router,FTP over TLS is not enabled等相关问题的解决方法
    2018-10-10
  • 配置Domino服务器详细步骤分享

    配置Domino服务器详细步骤分享

    配置服务器一共有两种:1.配置新的服务器2.删除原有服务器,再次安装(原来注册的人员依然能用)。这想这里指的安装并不是教你如何用张Domino服务器安装在机器上,主要是为了教你们如何配置 服务器
    2011-10-10
  • Windows10 1903错误0xc0000135解决方案【推荐】

    Windows10 1903错误0xc0000135解决方案【推荐】

    windows10 1903是2019年Mircosoft推出的最新版windows操作系统,但是有很多机器装上之后会存在不支持.net framework的现象,因此在这里,笔者为大家带来了解决该问题简单好用的方案,需要的朋友可以参考下
    2019-10-10

最新评论