【问题标题】:Unable to run native C++ application on different machine无法在不同的机器上运行本机 C++ 应用程序
【发布时间】:2011-02-27 15:39:50
【问题描述】:

我使用 Visual Studio 2008 用 C++ 编写了一个简单的“Hello, world”应用程序。我能够在本地计算机上成功运行该应用程序。但是当我将 exe 复制到另一台机器上并运行时,它不会运行。它给出了“应用程序无法启动,因为应用程序配置不正确”的错误。另一个系统没有安装 Visual Studio。可能是什么问题?

谢谢, 拉克什。

【问题讨论】:

  • 是不是说缺少某些dll?
  • Dependency Walker 是你的朋友。它会告诉您您的应用需要哪些 DLL(如果您在目标 PC 上使用它,哪些 DLL 会丢失。)

标签: c++


【解决方案1】:

我觉得你需要

1) 安装Microsoft Visual C++ 2008 Redistributable Package (x86)

2) 了解 C++ 应用程序的清单和部署:Scenarios for Deployment ExamplesChoosing a Deployment Method

【讨论】:

  • 去过那里.. 可再发行包仅适用于发布配置(不适用于调试配置)。
  • @Michael 在这种情况下,内置在 Release 中。如果调试库不在可再分发包中,则它们不在 eula 中进行再分发,并且您不能在不安装 Visual Studio 的情况下合法地将它们放在机器上。
【解决方案2】:

您可能已经使用 CLR 支持构建了您的应用程序并包含了 appconfig 之类的东西? 如果不需要 CLR,可以在项目选项中将其关闭。 如果问题与 .config 文件有关,您也可以使用 PE 复制它,一切都会正常。

【讨论】:

    【解决方案3】:

    您缺少必要的运行时库(例如,MSVCRT.DLL、MSVCR80.DLL 等)。您可能需要在目标机器上安装运行时库(这通常由安装程序完成)。首先,确保您链接的是运行时 DLL 的 release 版本(调试版本不可再分发)。

    如果您不知道缺少哪些 DLL,可以使用 Dependency Walker 工具 (depends.exe) 打开可执行文件以查看依赖项列表。

    如果您只是缺少 MSVCRT.DLL,您可以选择静态链接它。

    【讨论】:

      【解决方案4】:

      可能缺少 CRT DLL。使用静态 CRT - /MT(/MTd 用于调试)编译您的应用程序。 More info.

      在 Visual Studio 中,转到项目属性 > C/C++ > 代码生成 > 运行时库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-22
        • 2020-10-17
        • 2011-06-17
        • 2012-07-02
        相关资源
        最近更新 更多