【问题标题】:C++ Program built on Windows 7 with VS2012 /w Update 3 does not run on WinXP SP3使用 VS2012 /w Update 3 在 Windows 7 上构建的 C++ 程序无法在 WinXP SP3 上运行
【发布时间】:2013-08-06 16:29:37
【问题描述】:

我有一个使用 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() 函数。知道这只会治疗问题的症状而不是源头,我将 WS2_32.DLL 从 Win7 机器复制到我在 WinXP 机器上拥有 EXE 的同一目录中。我通过了该错误,只是将其替换为类似的错误,但这次指的是在 MSVCRT.DLL 中找到的函数。

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

有人知道我需要做什么才能让二进制文件在 WinXP 上运行吗?如果归根结底,我将在虚拟机中设置一个 WinXP 开发环境,然后从那里进行构建。目前工作量很大,所以我宁愿继续在我的 Win7 机器上进行构建。

谢谢!

【问题讨论】:

  • 我怀疑 this 是你所缺少的。
  • 嗯 ...我今天早上在 WinXP 机器上安装了 a vcredist for 2012。但是看看你的链接,它说“for Visual Studio 2012 Update 3”,我不记得我下载的 vcredist 副本上面写着“Upd​​ate 3”。所以这可能是我的问题。我现在正在家里输入这个回复,所以我会在明天上班的第一件事上尝试这个,然后再报告。谢谢!

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


【解决方案1】:

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

如果您只需要使用 IPv4,您可以使用 inet_ntoa(),否则,您可以使用 Winsock 函数 WSAAddressToString()WSAStringToAddress(),正如它在 Remarks 部分inet_ntoa() 文档:

【讨论】:

    猜你喜欢
    • 2011-09-12
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2017-08-31
    • 2011-07-11
    相关资源
    最近更新 更多