Witam!
Używam programu Visual Studio 2017.
Podążając za treścią książki natrafiłem na polecenie które każe utworzyć trzy pliki (2 o rozszerzeniu .cpp i jeden .h). W nagłówku zawarte są deklaracje:
extern int foo;
void print_foo();
void print(int);
Następnie w pliku źródłowym nazwanym "my_cpp" zawiera definicje funkcji:
#include "pch.h"
#include "my.h"
#include <iostream>
void print_foo()
{
std::cout << '\n' << foo;
}
void print(int i)
{
std::cout << '\n' << i;
}
Natomiast drugi plik o rozszerzeniu .cpp (use_cpp)zawiera definicję funkcji main oraz inicjacje wartości:
#include "pch.h"
#include "my.h"
#include <iostream>
int main()
{
foo = 7;
print_foo();
print(99);
}
Z pozoru proste zadanie sprawia mi trudności ze względu na błąd przy próbie kompilacji, ponieważ otrzymuję błędy:
*
LNK2001 unresolved external symbol "int foo" (?foo@@3HA) use_cpp
LNK2001 unresolved external symbol "int foo" (?foo@@3HA) my_cpp
LNK1120 1 unresolved externals
*
Z tego co udało mi się wyczytać LNK2001 dotyczy braku definicji, ale jednak jest ona zawarta w funkcji main, więc nie wiem co dalej zrobić.