ciao.
Sto utilizzando un programma xsd open source per generare sorgenti di classi c++ da un xsd.
Il mio problema adesso è che ho dovuto inserire un wrapper template del tipo:
template<class T>
class wrapper : public T
{
//implementazione membri da aggiungere
}
per inserire delle funzioni in particolare per poter utilizzare il pattern visitor.
Ogni classe(sono 2000) viene "avvolta" da questo wrapper che implementa delle funzioni comuni, ad es acceptVisitor.
Il problema adesso è che se compilo una static library tutto va correttamente, ma se cerco di creare una dll escono i problemi, il compilatre mi dice che non è possibile nella definizione di alcuni tipi con typedef ,mi rendo conto che è un po poco come indizio, ma vorrei capire la base del problema che ho esposto sotto, poi magari mi arrangio.
Adesso che ci penso non ho inserito __dllexport prima del wrapper template.
puo essere quello il problema?
Inoltre ed è la domanda principale:
come ci si deve comportare per esportare una classe template in una dll?
ho letto su un blog che è "pericoloso" esportare classi con funzioni che hanno dei parametri template ad es quelli della stl tipo il std::string, è vero?
perchè?
è la stessa cosa per tutti i template?
si risolvono tutti i problemi usando una static library?
grazie.
ps.
per Mitaly:
Ho capito perchè ridevi quando cercavo di compilare un file di classi template da 30 Mb(un cxx che viene espanso).
nel programma c'era un parametro per suddividere il file in "pezzi" da un tot di MB ha risolto perfettamente.
ciao.![]()

Rispondi quotando