0

みんな。

私は c++ の初心者で、c# の経験がありました。純粋な C++ 開発環境を作成し、標準の C++ ライブラリを使用したいと考えています。私のオペレーティング システムは Windows です。

私は code::block+MinGW を選択して、Windows 上で純粋な開発環境を構築します。MinGW を統合する Code::Block インストール パケットを直接選択します。それから私は最初の学習プロジェクトを開発し始めました。このプロジェクトでは、関数「stat」を使用して、標準ライブラリからファイル情報を取得しました。そして、私はコンパイルに合格しました。しかし、このプログラムの実行中に、「コールスタック」を確認しました。そして、ファイル「C:\WINDOWS\system32\msvcrt.dll」から呼び出される関数「stat」を見つけました。インターネットからこの dll を確認したところ、このファイルは Microsoft Windows ライブラリ ファイルであることがわかりました。したがって、明らかに、この dll ファイルには関数 "stat" はありませんが、関数 "_stat" があります。

では、どうすればこの問題を解決できますか? Microsoft Windows ライブラリではなく、標準の C++ ライブラリを使用したい。後で、このプロジェクトを Linux 環境に移動したいからです。全体として、要件を満たすために開発環境を構築するにはどうすればよいですか。

4

1 に答える 1

0

Windows 用にビルドする場合は、Windows システム ライブラリを使用する必要があります。ターゲット システムに応じて、どちらか一方をリンクするだけです。ライブラリは、OS ごとに異なる基本的な実装を提供するだけです。

特定の例では、 stat は標準のシステム ヘッダーによって定義された関数ですが、その基本的な実装はシステムによって異なります。関数全体が msvcrt から引き出される可能性はありますが、私の推測では、msvcrt はたまたま、システム固有のものすべてを処理するコンパニオン関数を実装していると思います。

于 2012-12-28T06:06:38.227 に答える