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:
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
twój projekt powinien wyglądać mniej więcej tak: Aplikacja - sam main z referencją do AplikacjaLibrary AplikacjaLibrary - statyczna biblioteka AplikacjatmTests - testy z referencją
@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
#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ę
#includetylko do pliku*.h, więc tylko plik*.hpojawi się przy kompilacji i nie mogę oczekiwać że plik*.cppz 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ć*.cppbo 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
twój projekt powinien wyglądać mniej więcej tak:
Aplikacja - sam main z referencją do AplikacjaLibrary
AplikacjaLibrary - statyczna biblioteka
AplikacjatmTests - testy z referencją