我是C ++的新手,但之前我曾与C合作过。
用C编写的程序必须与包含C函数的CRT(在Windows中,它是文件libcmt.lib
)链接(例如:printf()
)。
但是我想知道,是否有这样的事情" C ++ RT" (与CRT相反),我的意思是存储了C ++函数和类(例如:std::ofstream
)。
我有另一个问题,如果我使用了一些C函数(例如:printf()
),我的C ++程序是否会与CRT和" C ++ RT"相关联,或者" C ++ RT"包含CRT?
答案 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*.lib
或mscp*.lib
(以及关联的.dll
),具体取决于配置(link)。
请注意,通常可以使用非默认的标准库实现。例如,Clang可以在Linux上使用libstdc ++或libc ++。 Intel compiler在Windows上使用Microsoft库,在Linux上使用libstdc ++。还有一些与特定编译器无关的实现,如STLport。