【发布时间】:2015-08-05 21:25:58
【问题描述】:
我有一个关于原生 c++ 以及其他在 windows 上编程的快速问题——我最近在我自己的计算机上用 Visual Studio 编写了一个小型 c++ 程序,它为我做了一些数学运算。我成功编译它并将 .exe 从 VS 调试文件夹移动到我的桌面。它在我的计算机上运行良好,无论 .exe 位于何处。但是后来我把程序给了我的朋友,当他尝试运行它时,它说他缺少各种 dll 文件。现在我有一种感觉,这是因为 VS 中包含一个 c++ 环境,它允许它在我的而不是他的上运行。但我的问题是,为什么程序最初是用什么语言编写的?不就是把它编译成.exe,把代码变成机器语言,这样不管有没有开发工具,它都可以在任何电脑上运行吗?
【问题讨论】:
-
使用静态链接或安装可再发行包。可再发行包不太方便,但如果有修复程序,则无需重新编译程序即可对其进行更新。
-
编译时的静态链接?以及我想在其上运行程序的每个系统上的 redist 包?
-
不,只做一个或另一个。要么静态链接到 C 运行时(我假设它缺失),要么让你的朋友安装适当的 VC++ 可再发行包。您可以使用 Dependency Walker(在您朋友的机器上)来查看缺少哪些 DLL-s,但如果您的程序很小并且您没有添加任何显式的 3rd-party DLL 依赖项,那么它可能只是 C 运行时.
-
静态链接会给你更大的 exe 文件,但几乎所有东西都会被编译成可执行文件(除了 3rd-party 的东西)。
标签: c++ windows compilation native environment