在Windows 7上使用VS2012/w构建的C++程序Update 3不能在WinXP SP3上运行

问题描述:

我使用Visual Studio 2012 Update 3在Windows 7上编译了一个程序。我选择了“Visual Studio 2012 - Windows XP v110_xp)“平台工具集,当我建立它。但是,当我尝试在Windows XP SP3框上运行二进制文件时,出现以下错误:在Windows 7上使用VS2012/w构建的C++程序Update 3不能在WinXP SP3上运行

“程序入口点inet_ntop无法位于动态链接库WS2_32.DLL中。”

现在,我敢肯定,我知道这个错误意味着什么:这意味着DLL加载程序无法找到WinXP框上的WS2_32.DLL中的inet_ntop()函数。知道这只会处理问题的症状,而不是源,我将Win2框中的WS2_32.DLL复制到我在WinXP框中具有EXE的同一目录中。我得到了这个错误,只是为了让它替换为类似的错误,但这次是指MSVCRT.DLL中的函数。

奇怪的是,将MSVCRT.DLL从Win7框复制到WinXP框没有让我这次通过错误。

有谁知道我需要做什么让二进制文件在WinXP上工作?如果涉及到它,我将在虚拟机中设置一个WinXP开发环境,并从那里开始构建。在这一点上这是很多工作,所以我宁愿继续在我的Win7盒子上进行构建。

谢谢!

+0

我怀疑[this](http://www.microsoft.com/en-us/download/details.aspx?id=30679)是你缺少的。 –

+0

嗯......我今天早上把* 2012年的vcredist安装到了WinXP盒子里。但看看你的链接,它说:“对于Visual Studio 2012更新3”,我不记得vcredist的副本,我下载了“更新3”上面。所以这可能是我的问题。我现在正在家里输入这个回应,所以明天我会在工作中尝试这个第一件事,并且会回报。谢谢! –

According to MSDNinet_ntop()仅适用于Windows Vista及更高版本。

如果你只需要使用IPv4的工作,你使用inet_ntoa(),或做不到这一点,你可以使用Winsock功能WSAAddressToString()WSAStringToAddress(),因为它在备注提到inet_ntoa()文档部分:

Screenshot