Wpis z mikrobloga

Mam dwa projekty w Visual Studio: właściwa aplikacja i projekt z unit testami. W projekcie Tests zrobiłem referencję do tego drugiego projektu (PPM na "References" i zaznaczyłęm projekt "Aplikacja"), następnie w pliku z testami zrobiłem referencję do pliku nagłówkowego testowanej klasy, w ten sposób:

#include "../Aplikacja/Table.h"
Plik Table.h wygląda tak:

#pragma once
#include
using namespace std;

class Table
{
//deklaracja nazw funkcji, bez ich implementacji

//np. void loadFromFile(string FileName);
};

W projecie "Aplikacja" jest też sobie gdzieś plik "Table.cpp" gdzie funkcje są zadeklarowane.

No i tak: jeżeli w projekcie z testami robię odwołanie do Aplikacji (próbuję wywołać dowolną funkcję z Table)
to przy kompilacji linker wyrzuca błąd "unresolved external symbol". Mam bardzo małe doświadczenie w C++, ale jakby to wziąć na logikę to w klasie testującej robię #include tylko do pliku *.h, więc tylko plik *.h pojawi się przy kompilacji i nie mogę oczekiwać że plik *.cpp z funkcjami jakoś magicznie się tam pojawi. Z drugiej strony, operam się właśnie na tutorialu biblioteki testującej i zalecają tam includowanie pliku *.h. Z resztą nie mogę wczytać *.cpp bo Visual Studio nawet go nie widzi (zakreśla ścieżkę na czerwono). Czy ktoś z doświadczeniem podpowiedziałby jak to zrobić żeby było dobrze? xD

#programowanie #cpp #cplusplus
  • 4
@obserwator_z_prawem_interwencji:

twój projekt powinien wyglądać mniej więcej tak:
Aplikacja - sam main z referencją do AplikacjaLibrary
AplikacjaLibrary - statyczna biblioteka
AplikacjatmTests - testy z referencją do AplikacjaLibrary

jeżeli musisz robić ".." w ścieżce do .hpp to znaczy, że coś skopałeś z referencjami

mając dwa projekty będące wykonywalne i referując jednego do drugiego nie wiadomo do końca którego maina brać bo będą dwa
@MamCieNaHita: no dobra, utworzyłem projekt typu Static Library o nazwie AppLibrary w Solucji w Visual Studio, ale żeby wykonać #include będąc w main.cpp w projekcie Aplikacja do Table.h będącej w AppLibrary nadal muszę cofnąć się w drzewie plików, czyli zrobić ".." w ścieżce