我是 C++ 的新手,但我以前使用过 C。
用 C 编写的程序必须与 CRT 链接(在 Windows 中,它是文件 libcmt.lib
),其中包含 C 函数(例如:printf()
).
但我想知道,是否存在“C++RT”(与 CRT 相反)这样的东西,我的意思是 C++ 函数和类在哪里(例如:std::ofstream
) 存储。
我还有一个问题,如果我使用一些 C 函数(例如:printf()
),我的 C++ 程序是否会同时与 CRT 和“C++RT”链接,还是“C++RT”包含 CRT?
最佳答案
这取决于 C++ standard library 的具体实现你正在使用。
GCC附带 libstdc++并且您的程序会自动链接到 libstdc++*.so*
或 libstdc++*.dll*
(文件名可能因分发、构建选项和使用的版本而异)
Clang/LLVM附带 libc++和 libc++*.so*
在 Linux 和 OS X 上,但在 Windows 上使用 Visual C++ 库。
Microsoft Visual C++根据配置 (link),链接到 libcp*.lib
或 mscp*.lib
(以及关联的 .dll
)之一。
请注意,通常可以使用非默认标准库实现。例如,Clang 可以在 Linux 上使用 libstdc++ 或 libc++。 Intel compiler在 Windows 上使用 Microsoft 库,在 Linux 上使用 libstdc++。也有(曾经)与特定编译器无关的实现,比如 STLport .
关于c++ - CRT 的 C++ 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44954445/