Witam.
Mam takie pytanko.
Jak dołączyć do projektu dyrektywę #include z podaną ścieżką do swojej biblioteki?
Jeśli wpiszę #include “…/moje_biblioteki/wypelnianie_i_wypisywanie_tablicy.h” to wyskakują mi błędy:
/home/adrian/Zadania z programowania/sortowanie/sortowanie_przez_scalanie/main.cpp:51: błąd: undefined reference to `wypelnij_tablice(unsigned int*, unsigned int)’
/home/adrian/Zadania z programowania/sortowanie/sortowanie_przez_scalanie/main.cpp:53: błąd: undefined reference to `wypisz_tablice(unsigned int*, unsigned int)’
/home/adrian/Zadania z programowania/sortowanie/sortowanie_przez_scalanie/main.cpp:57: błąd: undefined reference to `wypisz_tablice(unsigned int*, unsigned int)’
błąd: collect2: error: ld returned 1 exit status
Ale zapis #include “…/moje_biblioteki/wypelnianie_i_wypisywanie_tablicy.cpp” działa.
O co chodzi? Czemu działa dołączenie pliku *.cpp a nie działa dołączenie pliku .*h?
Używam:
Qt Creator 4.0.3
Bazujący na Qt 5.6.1 (GCC 4.9.1 20140922 (Red Hat 4.9.1-10), 64 bitowy)
Wersja z Jul 5 2016 04:19:27
Z poprawki ce4ddcb060
System:
Ubuntu MATE 16.04 x64
Zawartość pliku wypelnianie_i_wypisywanie_tablicy.cpp:
#include "wypelnianie_i_wypisywanie_tablicy.h"
void wypelnij_tablice(uint *tab,uint n)
{
srand(time(NULL));
for(uint i=0;i<n;i++)
{
tab[i]=(rand()%900)+100;
}
}
void wypisz_tablice(uint *tab,uint n)
{
for(uint i=0;i<n;i++)
{
if(i%10==0)cout<<endl;
cout<<tab[i]<<" ";
}
}
Zawartość pliku wypelnianie_i_wypisywanie_tablicy.h:
#ifndef WYPELNIANIE_I_WYPISYWANIE_TABLICY_H
#define WYPELNIANIE_I_WYPISYWANIE_TABLICY_H
#include <iostream>
#include <time.h>
#include <cstdlib>
using namespace std;
void wypelnij_tablice(uint *, uint n);
void wypisz_tablice (uint *, uint n);
#endif // WYPELNIANIE_I_WYPISYWANIE_TABLICY_H
A potrzebuję takiej biblioteki w osobnym folderze, gdyż będę używał jej w kilku różnych projektach.