【问题标题】:how to add statically link run-time assemblies?如何添加静态链接运行时程序集?
【发布时间】:2013-02-26 19:52:58
【问题描述】:

我正在尝试在另一台未安装 Visual Studio 的计算机上运行 exe 文件。 当我尝试运行该文件时,我收到错误消息:此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。

我尝试寻找答案,但很多网站都提到了静态链接运行时程序集

但我不知道如何将它们添加到我的项目中。

(程序在 Visual Studios 2008 中的 c++ 控制台中)

【问题讨论】:

  • 这台机器上没有 Visual Studio。但是,我认为在项目属性>链接器下有一个选项可以从动态链接更改为静态链接。
  • 如果我更改运行时库,程序不会运行。当前库是:多线程 DLL (/MD)
  • 静态链接库(如果这是你所说的,因为它不是 100% 清楚)不能成为这个原因,因为它们是你部署的可执行文件的一部分,而不是单独部署
  • 我不太确定我需要做什么。你能看到这个问题的解决方案吗?我只想在另一台电脑上运行exe文件
  • 然后部署发布版本。您的目标机器没有调试 MFC 和运行时 dll。

标签: c++ visual-studio assemblies exe static-linking


【解决方案1】:

很难准确说出缺少哪些库。这里有一些想法。

  • 您正在部署调试版本。由于非开发计算机通常没有部署调试库 (mfc*xxxd.dll & co.),您的应用程序无法启动。您应该部署发布版本。
  • 您的应用程序是使用较新版本的 C 运行时或 MFC 构建的,这在目标计算机上不可用。您应该为您的 VS/开发工具版本安装 Visual C++ 可再发行包。
  • 如果您无法安装它,您应该将运行时/MFC 库静态链接到您的应用程序。根据您的 VS 版本,您需要转到项目设置并检查运行时库的正确版本(静态与动态)

如果仍然存在问题,您应该在目标机器上使用Dependency Walker 之类的工具准确检查缺少哪些 dll(实际上这应该始终是您应该做的第一件事,而不是猜测)。它将向您显示缺少哪些 dll。如果一切正常,那么您缺少一些延迟加载或 COM dll - 这不是在启动时加载而是按需加载。您可以使用 DependencyWalker 来分析应用程序的启动,以准确查看缺少的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 2010-11-02
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多