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

时间:2013-08-05 20:26:47

标签: c++ windows visual-studio-2012 windows-xp-sp3

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

“无法在动态链接库WS2_32.DLL中找到过程入口点inet_ntop。”

现在,我很确定我知道这个错误意味着什么:这意味着DLL加载器无法在WinXP框中的WS2_32.DLL中找到inet_ntop()函数。知道这只会处理问题的症状而不是源代码,我将Win2框中的WS2_32.DLL复制到WinXP框中的EXE目录中。我通过了这个错误,只是将它替换为类似的错误,但这次是指在MSVCRT.DLL中找到的函数。

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

如果您只需要使用IPv4,可以使用inet_ntoa(),或者如果失败,您可以使用Winsock函数WSAAddressToString()WSAStringToAddress()作为它在inet_ntoa()文档的备注部分中提及:

Screenshot