だからここに何が起こっているのですか:
最初は、1 つのメイン ソース ファイルがありました。コンパイルは数秒で完了しましたが、1000 行ほどの長さだったので、個別の .h/.cpp の組み合わせに分割し始めました。良いニュースは、私のメイン ソースの長さが 500 行以下になったことですが、悪いニュースは、それを完全にコンパイル/リンクできないことです。
それで、しばらく続けていますが、一向に良くなりません。
概要は次のとおりです (または概要なし):
次の 4 つのソース ファイルがあります。
corbit.cpp (メイン)、
initialization.cpp (エンティティのベクトルの初期化)、
entity.cpp (エンティティ クラス ファイル)、
display.cpp (HUD およびカメラ クラス ファイル)。
Main には、「display.h」として他のすべてのソース ファイルが含まれます。また、(たとえば) allegro.h.
display.cpp には、「entity.h」(#ifndef ENTITY_H ガード付き)、「display.h」、および (たとえば) allegro.h が含まれます。
entity.cpp には「entity.h」が含まれています
initialization.cpp には、(再び #ifndef ガードを使用して) 「entity.h」と「initialization.h」が含まれています。
GCC を使用して Codeblocks でコンパイルすると、locale_facets.tcc (それが何であるか知っている人はいますか?) が空のファイルとして開きます。また、次の 2 つのエラー メッセージが表示されます。
関数 'ZNSt6vectorIP10physical_tSaIS1_EE5clearEv' 内の corbit.o
display.o: [プロジェクト ディレクトリ]..\lib\gcc\mingw32\3.4.5........\include\c++\3.4.5\bits\locale_facets.tcc (2497 行目) (ここで最初に定義) ) <-- 赤くハイライト
と
関数 'ZNSt6vectorIP10physical_tSaIS1_EE5clearEv' 内の corbit.o
display.o: [プロジェクト ディレクトリ]..\lib\gcc\mingw32\3.4.5........\include\c++\3.4.5\bits\locale_facets.tcc (2497 行目) (ここで最初に定義) ) <-- 赤くハイライト
、同じように見えます。私のメインで私は宣言しました
std::vector<physical_t*> entity;
(physical_t はエンティティ クラスです)、これは最初のメッセージと関係がある可能性があります。
私が持っている各.hファイルで
#ifndef FILENAME_H
#define FILENAME_H
[declarations]
#endif
そして、インクルードしている .cpp ファイルに対応しないヘッダーをインクルードするときはいつでも、それを
#ifndef FILENAME_H
#include "filename.h"
#endif
私は iostream、math.h、allegro.h などのさまざまな .cpp ファイルを持っているので、それらが定義している関数は構文エラーなしでコンパイルできます。
Windows、コードブロック、gcc を使用。私は他に何も考えられません。助けていただければ幸いです!