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

标签 c++ visual-c++ exe

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

最佳答案

如果您的程序使用标准库中的任何内容,它将需要 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 标志也是如此。

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

关于c++ - 如何在任何 Windows 计算机上运行 .exe 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28313473/

相关文章:

c++ - 多态性->错误 : 'no known conversion from derived class to base class'

c++ - clang 和 gcc 中是否有 Visual C++ __declspec (属性声明属性)的替代方案?

c++ - VC++ 中的函数级链接是否有任何负面影响?

java - JSmooth Java 1.4 或更高版本未找到错误

c++ - 为什么这个系统范围的 CBT Hook 不能正常工作?

c++ - GCC6.3.0 : flag "--coverage" not functioning (no gdca files generated)

c++ - 如何在GPU上复制OpenACC中分配的 vector 指针内存的 vector

c++ - 如何为类定义 UUID,并以与 g++ 和 Visual C++ 相同的方式使用 __uuidof?

java - 如何在Java项目中隐藏/保护媒体文件夹?

用于更改 .exe 使用的图标的 Java 库