私は、さまざまなクラスを使用する必要があるプロジェクトに取り組んでいます。何らかの理由で、コンパイルしようとすると、次のようなエラーが表示されます。
Undefined symbols for architecture x86_64:
User
私はもともと、次のような宣言を持つ呼び出し可能なクラスに取り組んでいましたuser.h
:
#ifndef USER_H
#define USER_H
...other include statements
class User
{
public:
User();
public and private members and functions
};
#endif
メソッドの定義は、同じディレクトリ内の別のファイルに格納されていましたuser.cpp
。
コンパイルしようとすると、コンストラクタとデストラクタに未定義のシンボルがあるというエラーが表示されます。これらの両方を.cpp
ファイルに定義しましたが、エラーを解消できませんでした。
User クラスを主に次のように含めます。
#include "user.h"
user.cpp
ファイルのすべてのコードを に貼り付けることでこれを修正できましuser.h
たが、コードを変更できない他のクラスで問題が発生しています。
現在、GMLReader というクラスがあり、gmlreader.h
静的に呼び出しているメソッドがあります。ただし、メイン用にインポートしているにもかかわらず、呼び出そうとするたびに次のエラー コードが表示されます。
Undefined symbols for architecture x86_64:
"GMLReader::read(char const*, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)", referenced from:
_main in cchnzOEh.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
私は以下を使用してsn.cpp
、メインを収容してコンパイルしています。
g++ -g -Wall -o sn sn.cpp
このようなエラーが発生する理由はありますか?どうすれば修正できますか?