Я очень новичок в программировании на С ++ и программировании в целом. Недавно мы добавляли заголовочные файлы и другие исходные файлы (реализацию) в наши программы в классе. Я пытался написать простейшую программу, чтобы убедиться, что я понимаю основы включения нескольких файлов в одну программу, но они не скомпилируются, что приводит к ошибкам компоновщика.
а именно:
Undefined symbols for architecture x86_64:
"FooBar::printSomething()", referenced from:
_main in main-d52d70.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Когда я компилирую в терминале «g ++ main.cpp creation.cpp», все работает просто отлично.
мой код:
main.cpp
#include "header.h"
int main()
{
FooBar object;
object.printSomething();
return 0;
}
header.h
#ifndef _Header_h_
#define _Header_h_
#include <iostream>
using namespace std;
class FooBar{
public:
void printSomething();
private:
string helloWorld;
};
#endif
implementation.cpp
#include "header.h"
void FooBar::printSomething(){
helloWorld = "Hello World!\n";
cout << helloWorld;
}
Я люблю CodeRunner, но это действительно расстраивает меня.
Спасибо!
Для любого с похожим вопросом Я нашел решение:
Я допустил ошибку в создании файла заголовка и файла реализации класса в файле заголовка, различного по имени.
header.h должен быть назван foobar.h
application.cpp должен быть назван foobar.cpp
когда я изменил имена файлов на foobar.h и foobar.cpp, программа скомпилировалась и прекрасно работала в CodeRunner.
Мой профессор сказал мне, что заголовочный файл для класса и его файл реализации должны иметь одно и то же имя с разными типами файлов, а именно, x.cpp и x.h.
Других решений пока нет …