我使用 Visual Studio 在 C++ 中创建了一个客户端服务器应用程序。
现在我想在另一台计算机(没有安装 Visual Studio)上运行客户端 EXE 文件,但是当我尝试运行 EXE 文件时,它会给出以下错误消息:
此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。
如何在不在计算机上安装任何东西的情况下运行 EXE 文件?
我使用 Visual Studio 在 C++ 中创建了一个客户端服务器应用程序。
现在我想在另一台计算机(没有安装 Visual Studio)上运行客户端 EXE 文件,但是当我尝试运行 EXE 文件时,它会给出以下错误消息:
此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。
如何在不在计算机上安装任何东西的情况下运行 EXE 文件?
使用 Visual Studio 构建的应用程序依赖于 Visual C++ Redistibutable (VCRedist)。当程序被动态链接时,您的二进制文件将需要
MSVCR**.dll
(Microsoft C 运行时库)。
在 MSDN 上,有一篇很好的文章,名为Redistributing Visual C++ Files (for Visual Studio 2008),指出在未安装所需的 Visual C++ 库的情况下存在潜在的运行时错误:
基本上你有两个选择:根据您尝试运行应用程序的 Windows 版本,您可能会收到以下错误消息之一:
- 应用程序未能正确初始化 (0xc0000135)。
- 此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。
- 系统无法执行指定的程序。
但是您的应用程序也可能依赖于其他 DLL 文件。如果您想找出程序的依赖项是什么,有一个名为Dependency Walker的强大实用程序可以在这种情况和许多其他情况下为您提供帮助 :)
背景:
解决方案:
最后无论如何,目标计算机应该具有确切的运行时程序集。有几种方法可以做到这一点(有关更多详细信息,请在 Google 中搜索)。
条件:
我在发布而不是调试中部署了我的程序,并且 EXE 文件现在可以在另一台计算机上运行。
我以前没有见过那个特定的错误。通常这是缺少 DLL(Windows 可再发行组件)的错误。假设配置实际上没有问题,您有两种选择:
将编译模式从Multithreaded DLL更改为Multithreaded。这可以从代码生成下项目属性的 C++ 部分完成。在多线程模式下,您的二进制文件将静态链接到 Windows 可再发行组件。这可能就是你想要的。
在目标机器上安装 Windows 可再发行组件。这可能不行,因为您声明您不想在目标机器上安装任何东西。
关于选项 1 的警告:不同版本的 Windows 具有不同版本的可再发行组件。可能会遇到高度专业化的环境,其中静态链接的程序不会按预期运行。
看起来您缺少一些 DLL 文件。请务必将适当的 DLL 文件与 EXE 文件一起复制。
我正在运行 Visual Studio 2019,我发现了一个非常有用的配置属性来解决将简单应用程序移动到另一台没有安装包的计算机的问题。
重建你的项目。所有必要的 dll 都将被复制到项目的输出目录中。将您的 exe 和所有 dll 复制到另一台计算机。exe 应该找到运行所需的一切。