什么是CRT的C ++等价物?

时间:2017-07-06 16:29:28

标签: c++ c windows

我是C ++的新手,但之前我曾与C合作过。

用C编写的程序必须与包含C函数的CRT(在Windows中,它是文件libcmt.lib)链接(例如:printf())。

但是我想知道,是否有这样的事情" C ++ RT" (与CRT相反),我的意思是存储了C ++函数和类(例如:std::ofstream)。

我有另一个问题,如果我使用了一些C函数(例如:printf()),我的C ++程序是否会与CRT和" C ++ RT"相关联,或者" C ++ RT"包含CRT?

1 个答案:

答案 0 :(得分:14)

这取决于您正在使用的C++ standard library的确切实现。

GCC附带libstdc++,您的程序会自动链接到libstdc++*.so*libstdc++*.dll*(文件名可能因发行版,构建选项和使用的版本而异)

Clang/LLVM在Linux和OS X上附带libc++libc++*.so*,但在Windows上使用Visual C ++库。

Microsoft Visual C++链接其中一个libcp*.libmscp*.lib(以及关联的.dll),具体取决于配置(link)。

请注意,通常可以使用非默认的标准库实现。例如,Clang可以在Linux上使用libstdc ++或libc ++。 Intel compiler在Windows上使用Microsoft库,在Linux上使用libstdc ++。还有一些与特定编译器无关的实现,如STLport