Неопределенные символы для архитектуры x86_64: и не может найти причину - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть main.cc, который

#include <iostream>
#include "Sally.h"
using namespace std;

int main(){
   Sally sallyObject;
   sallyObject.printCrap();

}

, и заголовочный файл Sally.h, который

#ifndef SALLY_H
#define SALLY_H

class Sally{
public:
    Sally();
    void printCrap();
protected:
private:
};

#endif //BURRITO_H

, и Sally.cc, который

#include "Sally.h"
#include <iostream>
using namespace std;

Sally::Sally()
{
}

void Sally::printCrap(){
    cout << "did someone say steak?" << endl;
}

, и эти три файла находятся в одном каталоге. Когда я набираю g++ main.cc, я не могу создать код. Там написано

Undefined symbols for architecture x86_64:
    "Sally::printCrap()", referenced from:
         _main in main-16cd07.o
    "Sally::Sally()", referenced from:
         _main in main-16cd07.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Кто-нибудь знает, почему это происходит?

1 Ответ

0 голосов
/ 11 ноября 2019

Я считаю, что вам нужно скомпилировать все файлы .cc вместе, потому что sally.cc не включен.

g++ main.cc sally.cc

Нужно сделать свое дело.

Включение файла dot-h делает определение вашего класса видимым для всех (включая main.cc), но фактическоеТело кода не видимо без его компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...