Я пытаюсь понять, как работает включение нескольких файлов в C ++. Я много искал и, наконец, написал тестовый код, который суммирует мою проблему. У меня есть два заголовочных файла и два файла cpp, которые выглядят так:
test1.h:
#ifndef _TEST_1_H
#define _TEST_1_H
int val = 10;
void func1();
#endif
test2.h:
#ifndef _TEST_2_H
#define _TEST_2_H
#include "test1.h"
void func2();
#endif
test1.cpp:
#include <iostream>
#include "test1.h"
void func1()
{
std::cout<<val<<std::endl;
}
test2.cpp:
#include <iostream>
#include "test2.h"
void func2()
{
func1();
}
И мой основной файл выглядит следующим образом:
test.cpp:
#include <iostream>
#include "test2.h"
#include "test1.h"
int main()
{
func1();
func2();
getchar();
return 0;
}
Я использую VS10, и я только добавил "test.cpp" в качестве исходного файла. Когда я компилирую этот код, я получаю следующую ошибку:
**1>test.obj : error LNK2019: unresolved external symbol "void __cdecl func2(void)" (?func2@@YAXXZ) referenced in function _main **
**1>test.obj : error LNK2019: unresolved external symbol "void __cdecl func1(void)" (?func1@@YAXXZ) referenced in function _main **
Я не совсем понимаю, даже после включения обоих заголовочных файлов, почему я получаю это? Чего мне не хватает?
Буду признателен за любую помощь!
Спасибо
Новичок