在另一台计算机上运行使用Visual Studio构建的exe文件的问题

Kar*_*456 20 c++ exe visual-studio-2008 visual-studio visual-c++

我使用Visual Studio在C++中创建了一个客户端服务器应用程序.

现在我想在另一台计算机(没有安装Visual Studio)上运行客户端exe文件,但是当我尝试运行exe文件时,它会给出以下错误消息:

此应用程序无法启动,因为应用程序配置不正确.重新安装应用程序可能会解决此问题.

如何在不在计算机上安装任何内容的情况下运行exe文件?

Lih*_*ihO 20

使用Visual Studio构建的应用程序依赖于Visual C++ Redistibutable(VCRedist).当程序动态链接时,您的二进制文件将需要 MSVCR**.dll(Microsoft C运行时库).

在MSDN上,有一篇很好的文章称为Redistributing Visual C++ Files(对于Visual Studio 2008),它指出在未安装所需的Visual C++库的情况下存在潜在的运行时错误:

您可能会收到以下错误消息之一,具体取决于您尝试运行应用程序的Windows版本:

  • 应用程序无法正确初始化(0xc0000135).
  • 此应用程序无法启动,因为应用程序配置不正确.重新安装应用程序可能会解决此问题.
  • 系统无法执行指定的程序.
基本上你有两个选择:
  • 最简单的解决方案是将运行时库的动态链接更改为静态链接.转到项目属性,在C/C++>代码生成下,您将找到运行时库选项.您需要将其更改MSVCR**.dllMSVCR**.dll.
  • 另一种可能的解决方案是确保在目标计算机上安装了正确版本的Microsoft VC++ Redistributable Package.

但您的应用程序可能也依赖于其他DLL.如果你想知道程序的依赖性,有一个很棒的实用程序叫做Dependency Walker,它可以帮助你解决这个问题以及许多其他情况:)

  • +1表示静态链接.这是OP问题的真正答案(如何在不安装任何东西的情况下运行).`depends`是一个很好的工具,可以找出缺少的库. (3认同)

Nay*_*iya 11

背景:

  • C++应用程序需要运行时程序集(DLL)才能在任何Windows计算机上运行.
  • 通常这些运行时程序集位于C:\ Windows\Winsxs目录中.
  • 默认情况下,所有Windows操作系统都带有多个运行时程序集.
  • 但是如果您的应用程序是在较新版本的Run-time assembly环境中开发的,那么目标计算机还需要存在相同版本的运行时.
  • 安装Visual Studio时,大多数较新版本的运行时程序集都会进入您的计算机.

Soloution: 最后无论如何,目标计算机应该具有确切的运行时程序集.有几种方法可以做到这一点(更多细节搜索谷歌每个).

  1. 将运行时程序集与应用程序静态链接(适用于大型应用程序的麻烦).
  2. 在目标计算机中安装C++重新分发环境(最简单的方法).
  3. 创建安装项目以在安装应用程序时在目标计算机中部署运行时.(不错)
  4. 将运行时程序集部署为私有程序集(专业程序),请参阅此处了解更多详细信息

条件:

  • 您不得在您的应用程序中使用.NET框架.
  • 您不得对您的应用程序使用公共语言运行时支持


小智 5

我以前没有见过那个特定的错误。通常是因为缺少 DLL(Windows 可再发行组件)而导致的错误。假设配置实际上没有问题,您有两种选择:

  1. 将编译模式从Multithreaded DLL更改为Multithreaded。这可以从代码生成下项目属性的 C++ 部分完成。在多线程模式下,您的二进制文件将与 Windows 可再发行组件静态链接。这可能就是你想要的。

  2. 在目标计算机上安装 Windows 可再发行组件。这可能不好,因为您声明不想在目标机器上安装任何东西。

关于选项 1 的警告:不同版本的 Windows 具有不同版本的可再发行组件。可能会遇到高度专业化的环境,在该环境中静态链接的程序不会按预期运行。


Kar*_*456 5

我在发布而不是调试中部署了我的程序,并且 EXE 文件现在可以在另一台计算机上运行。