Mettiamo a punto un pò di cose. Hai creato un header chiamato lib.h. Bene questo header ha bisogno dei header guard. Il perché e cosa sono ti viene spiegato quà:
http://it.wikipedia.org/wiki/Include_guar
E' meglio imparare a sviluppare applicativi subito in C++ e lasciar stare i rimasugli di C quali char array (esiste la classe std::string) e vettori con dimensione predefinita (esiste il std::vector).
il typedef delle strutture in C++ è superfluo. quindi la tua struttura nel header può essere scritta così:
#include <string>
#include <vector>
struct dati
{
int cod_prod;
std::string nome;
std::string datain;
std::string dataus;
int dispo;
std::string colore;
};
std::vector<dati> prodotti;
Ovviamente poi c'è da cambiare tutto il resto del codice ma già da quì possiamo migliorare.