Visual Studio 2012(以及早期版本)可以编译C代码,但只能编译普通的C代码,而不是C++代码。如果您想避免运行时麻烦,这将是一个很好的功能。我想编译普通的C二进制文件,并希望在没有MSVCRT运行时的情况下实现这一点。在添加了/T C(编译为C)选项后,我希望得到一个仅具有基本依赖关系(如kernel32和ntdll)的二进制文件。但是,实际上链接的是:
我们想使用VS 2012,而不是运行时。GCC编译器不需要它,因此在VS中也必须有一种编译“简单”二进制文件的方法。我们不一定需要复杂的字符串函数或日期/时间库,只需要简单的代码。
问题:是否可以在Visual Studio 2012中编译没有MSVCRT运行时(甚至是C ++代码)的C代码?
编辑:不使用静态链接(/MT)。
我们想使用VS 2012,而不是运行时。GCC编译器不需要它,因此在VS中也必须有一种编译“简单”二进制文件的方法。我们不一定需要复杂的字符串函数或日期/时间库,只需要简单的代码。
问题:是否可以在Visual Studio 2012中编译没有MSVCRT运行时(甚至是C ++代码)的C代码?
编辑:不使用静态链接(/MT)。
printf
、strcmp
和memcpy
这类函数会放在哪里?我的理解是MSVC运行时有点像Linux上的libc.so
。 - us2012/MT
呢?我认为它只链接你实际使用的东西。所以如果你不使用MSVCRT中的任何内容,它就不会链接任何东西。 - user2802841memcpy
也可以在另一个DLL中使用,而且分布在Windows计算机上更广泛。 - bytecode77msvcrt.dll
来完成这个任务。这样做可行吗? - bytecode77