有没有一种方法可以在不使用任何运行时库的情况下使用Visual Studio 2015编译C/C++代码?
我需要在没有运行时库的情况下编译,因为我正在创建自己的运行时库(用于我的操作系统)。
C/C++ -> 代码生成 -> 运行时库有选项, 但我想要一个选项说“无”。
我知道这样会失去许多CRT中的功能。
有没有一种方法可以在不使用任何运行时库的情况下使用Visual Studio 2015编译C/C++代码?
我需要在没有运行时库的情况下编译,因为我正在创建自己的运行时库(用于我的操作系统)。
C/C++ -> 代码生成 -> 运行时库有选项, 但我想要一个选项说“无”。
我知道这样会失去许多CRT中的功能。
如果想在不使用C运行时库(CRT)的情况下编译您的应用程序,请使用/MT
,/NODEFAULTLIB
链接器选项,并在链接器->高级->入口点
中重新定义入口点到代码中定义的函数,例如 rawMain
。签名为:
DWORD CALLBACK rawMain();
如果没有C运行库,您将无法使用其函数,例如malloc
、free
、memset
等。您应该自己实现所有使用的CRT函数。例如,您可以通过使用VirtualAlloc()
替换malloc
的使用,使用VirtualFree()
替换free
的使用。
要检查C运行库是否未链接到您的应用程序,请使用Dependency Walker。
VC\crt\src\vcruntime\exe_common.inl
(VS2015)中。 - NikitaC ++标准库头文件
,因为在这种情况下,标准C ++库将自动链接。 - Nikita_scrt
函数。我们按照以下方式完成:链接器 -> 高级 -> 入口点
,然后我们有了 "main" 函数,将其添加为 "main",现在它已经删除了所有这些函数。 - E235