如何在任何 Windows 计算机上运行 .exe 文件?

Posted

技术标签:

【中文标题】如何在任何 Windows 计算机上运行 .exe 文件?【英文标题】:How can I run a .exe file on any Windows computer? 【发布时间】:2015-02-04 04:24:31 【问题描述】:

我的朋友想让我为他制作这个程序,但他不是很精通技术。我怎样才能让 .exe 运行而不让他下载任何额外的东西?它是在 Visual Studio 上用 C++ 编写的。

【问题讨论】:

不行,你需要分发运行时。 那么到目前为止你做了什么? 您可以静态链接所有内容,但可执行文件可能会变得有点大。 还有其他文件类型我可以转换吗?像.iso?我不一定需要它是 .exe,但我希望它在命令提示符下运行并按预期运行。 【参考方案1】:

如果您的程序使用标准库中的任何内容,它将需要 Visual C++ 运行时库,该库通常从库 DLL 加载(类似于msvcr110.dll)。

但是,您可以指示 编译器(而不是 链接器)将库包含(我不是说 #include-ing 头文件)作为您的一部分可执行文件(exe 文件)。 (我猜你想到了 ISO,因为存档文件将包含所有必要的 DLL)根据https://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx,使用 /MT 编译器选项将导致 Visual C++ 运行时库(即库在预编译的代码中)在链接期间包含在您的程序中(与默认的 /MD 选项相反,它只会导致包含帮助您的程序链接到主库 DLL 的代码)。

更正:程序会变大,但由于链接器实际上并没有将所有内容添加到输出程序中,因此输出文件的大小取决于程序的内容用途。 Microsoft Visual Studio ~ C/C++ Runtime Library ~ Static/dynamic linking 这可能会有所帮助。 (有兴趣可以看Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib(别忘了换版本号哦)

进入项目设置 -> 配置属性 -> C/C++ -> 代码生成并将runtime library设置为Multi-threaded (MT)

更正:似乎直接设置编译器标志工作,即使在命令行中保留默认的 /MD 或 /MDd 标志。

编辑:确保在应用这些设置后清理解决方案(构建 -> 清理解决方案)。否则链接器可能仍会尝试使用旧文件。

【讨论】:

以上是关于如何在任何 Windows 计算机上运行 .exe 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何限制我的exe只能安装在特定的计算机上?

如何在 Friends 计算机上运行带有 ms 访问数据库的 java 应用程序?它在我的电脑上运行良好

已发布的 qt .exe 不会在另一台计算机上打开

如何修复仅在一台计算机上运行的 Exe 文件

如何在远程计算机上启动调试过程?

Pyinstaller - 独立的 .exe