假设我们有一个简单的c代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
printf("hello\n");
}
如果我们用 icc 编译这个源代码,最终的可执行文件是否需要任何额外的库才能在 Windows7 机器上运行?如果我用 Visual Studio 编译会发生什么?我需要为我使用的每个编译器安装不同的可再发行库吗?有什么办法可以避免这种情况吗?如果我将所需的库文件复制到与可执行文件相同的目录中,可以吗?
链接CRT的静态版本。 在 msvc 中,这是通过项目 + 属性、C/C++、代码生成、运行时库 = /MT 或 /MTd 完成的。 不知道icc,应该有类似的东西
默认为/MD,使用CRT的DLL版本。 但您必须确保目标计算机上安装了 DLL。 /MD 是安全的选择,当您使用具有公开 C++ 类(如 std::string)的导出函数的 DLL 时,您不太可能遇到内存管理问题。
使用 TDM MinGW 进行编译 - 除了所有最新版本的 Windows 附带的 MSVCRT.DLL 之外,不会有任何依赖项。