2017-07-06 12 views
1

私はC++を初めて使っていますが、以前はCで作業していました。CRTのC++に相当するものは何ですか?

Cで記述されたプログラムは、C関数(たとえば、printf())を含むCRT(Windowsではファイルlibcmt.lib)にリンクする必要があります。

しかし、「C++ RT」(CRTとは対照的に)のようなものがあります。つまり、どこにC++関数とクラス(例:std::ofstream)が格納されているのでしょうか。

私はいくつかのC関数(例:printf())を使用すると、私のC++プログラムをCRTと "C++ RT"の両方にリンクするか、 "C++ RT "CRTが入っていますか?

+0

私は[CRT](https://marketplacecdn.yoyogames.com/images/assets/3060/screenshots/8173_original.gif?1449578408)とのリンクも思い出しています。ウィンドウの前でも;-) – chux

+0

@chuxはこれですフォーム? o_O – iehrlich

+0

多くの標準C++ライブラリコードがヘッダーに格納されています。しかし、そうです、テンプレート化されていないコードとテンプレートの特殊化のためにlibcpmt * .libをリンクします。 –

答えて

11

これは、使用しているC++ standard libraryの正確な実装によって異なります。 libstdc++とあなたのプログラムと

GCC船は自動的にlibstdc++*.so*またはlibstdc++*.dll*(ファイル名が使用されるオプションとバージョンをビルドし、ディストリビューションによって異なる場合があります)

Clang/LLVM LinuxとOS X上libc++libc++*.so*に付属ますが、用途に対してリンクされていますWindows上のVisual C++ライブラリ。 libcp*.lib又はmscp*.lib(及び関連.dll)構成(link)に応じてのいずれかに対して

Microsoft Visual C++リンク。

デフォルト以外の標準ライブラリ実装を使用することはよくあります。たとえば、ClangはLinuxでlibstdC++またはlibC++のいずれかを使用できます。 Intel compilerは、WindowsではMicrosoftライブラリを使用し、LinuxではlibstdC++を使用します。 STLportのような特定のコンパイラに関連しない実装もあります。

関連する問題