【问题标题】:Different versions of C++ libraries不同版本的 C++ 库
【发布时间】:2010-09-10 09:16:13
【问题描述】:

在 vista 上使用 Visual Studio 2008 编译一个简单的 C++ 项目后,一切都在原始 vista 机器和其他 vista 计算机上运行良好。但是,将其移至 XP 框会导致错误消息:“应用程序无法启动,因为应用程序配置不正确”。

我必须怎么做才能使我编译的 EXE 在 XP 和 Vista 上运行?几个月前我也遇到过同样的问题,只是在项目中修改了一些设置就修复了它,但我不记得我改变了哪些。

【问题讨论】:

    标签: c++ windows windows-vista windows-xp


    【解决方案1】:

    您需要在目标计算机上安装 Visual Studios 2008 运行时:

    http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en

    或者,您也可以静态链接运行时,在项目属性窗口中转到:

    c++ -> 代码生成 -> 运行时 库并选择“多线程 /MT"

    【讨论】:

      【解决方案2】:

      您需要将运行时可再发行文件安装到您尝试运行应用程序的机器上。

      2008 年的可再发行版是 here

      2005 年的可再发行文件是 here

      它们可以并排安装,以防您需要两者。

      【讨论】:

      • 是的,但我宁愿不必让用户这样做。有没有办法针对旧库进行编译?
      【解决方案3】:

      您可能需要将 VC 运行时与您的应用程序一起分发。有多种方法可以做到这一点。如果您使用的是 Visual Studio 2005 或 2008,来自 Microsoft Visual C++ 团队的This article 最好地解释了分发这些依赖项的不同方法。

      如文章中所述,尽管您可以下载 Redistributable 安装程序包并简单地在客户端计算机上启动它,但这几乎总是不是最佳选择。通常有更好的方法来包含所需的 DLL,例如,如果您通过 Windows 安装程序分发,则包含合并模块;如果您只想分发压缩文件夹,则包含 App-Local 副本。

      另一种选择是静态链接运行时库,而不是与您的应用程序一起分发它们。此选项仅适用于不加载其他 DLL 的独立 EXE。您也不能对其他应用程序加载的 DLL 执行此操作。

      【讨论】:

        【解决方案4】:

        静态链接到运行时是最简单的。

        c++ -> 代码生成 -> 运行时库并选择“多线程/MT”

        但是,这确实会使您的可执行文件大几百 KByte。如果您要安装大量的小程序,这可能会成为一个问题,因为每个小程序都会被自己的运行时副本所累。答案是创建一个安装程序。

        新建项目->“设置和部署”->“设置项目”

        将应用程序项目的输出(使用运行时的 DLL 版本定义)加载到安装程序项目中并构建它。将注意到对运行时 DLL 的依赖,将其包含在安装程序包中,并整齐且不显眼地安装在目标机器上的正确位置。

        【讨论】:

          【解决方案5】:

          Visual Studio 2005 实际上有两个

          the original release的那个

          还有一个for SP1

          【讨论】:

            猜你喜欢
            • 2018-04-25
            • 2018-08-20
            • 1970-01-01
            • 2012-05-08
            • 1970-01-01
            • 2016-03-11
            • 2015-01-16
            • 1970-01-01
            相关资源
            最近更新 更多