class — C ++ Несколько Классов Причина Архитектура Ошибка

Я работаю над проектом, который требует от меня использования различных классов.
По какой-то причине, когда я пытаюсь скомпилировать, я получаю сообщение об ошибке:
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 в main со следующим:

#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

Есть ли какая-либо причина, по которой произошла бы ошибка, и как я могу исправить ее?

2

Решение

Вам также необходимо скомпилировать и связать user.cpp:

g++ -g -Wall -c user.cpp -o user.o
g++ -g -Wall -o sn sn.cpp user.o
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]