Nella mia domanda ho 3 parti principali:Linking: Statico vs dinamico
- Exe: un file eseguibile
- Lib_A: una biblioteca contiene una classe Singleton e una classe di base per alcuni calcoli da utilizzare in Singleton classe
- Lib_B: una biblioteca contiene un certo numero di classi derivate dalla base in Lib_A
la ragione per cui ho le classi derivate in Lib_B è, vorrei compilare Lib_B in runtime da Exe. Ho bisogno di generare classi derivate durante i calcoli senza terminare l'intero sistema. Questo è troppo importante per me. Ciò significa che inizialmente potrei dire che Lib_B1 è stato caricato dinamicamente, inoltre posso compilare altre versioni di Lib_B come Lib_B2, Lib_B3, Lib_B4 ecc. E caricarle anche dinamicamente. Tutte le librerie Lib_Bx avranno funzioni di entry point per esportare le classi al loro interno.
in modo da prendere i seguenti fatti in considerazione:
- In fase di esecuzione ci saranno vari numero di file che condividono lo stesso Lib_A.
- L'applicazione deve essere eseguita in Windows e Linux. Quindi la cross-platformness parziale è un problema.
- ho intenzione di utilizzare alcune librerie come TBB, Boost, Qt che può avere le proprie librerie come tbb.dll ecc
Quali sono i pro ei contro di statico o dinamico che collega di Lib_A sia contro Exe e Lib_Bx's? Come possono influire la perfomance, le dimensioni del sistema, ecc.? Ci sono situazioni pericolose o difficili che posso scoprire oltre per ogni sistema operativo ho bisogno di usare lo stesso compilatore per Exe, Lib_A e Lib_Bx.
Il design dell'intero sistema è un problema molto difficile per me, quindi qualsiasi commento sarà apprezzato.
Grazie mille.
Bene, voglio utilizzare il compilatore MSVC++ in Windows e il compilatore Intel C++ in Linux. Penso che entrambi generino un codice ottimizzato meglio di GCC. L'applicazione è solo per uso mio. Non sono disposto a venderlo. –
@sad_man: hai intenzione di ottenere i diritti di ridistribuzione per VC e ICC? Buona fortuna. – ephemient
@ephermient: per il momento non distingo la mia domanda. Ma se lo venderò in futuro, ovviamente il cliente fornirà la propria copia del compilatore. So che non suona bene ma questo è un trucco per ottenere la velocità del codice binario compilato. Per ora sto bene con VC e ICC. Nel peggiore dei casi posso distribuire l'applicazione con GCC giusto? :) –