Gli eseguibili collegati in modo statico non hanno bisogno di questo ridistribuibile.
Si crea un eseguibile collegato in modo statico passando il tipo di runtime da "DLL multi-thread" a "Multi-thread" (opzione del compilatore /MT
anziché /MD
).
È soggetto alle seguenti limitazioni:
- Tutte le librerie a cui è collegato il file eseguibile devono essere compilate con la stessa impostazione. Pertanto, se si utilizzano librerie di terze parti e non si dispone di una variante per la compilazione statica né delle origini, non è possibile eliminare la ridistribuibile.
- Compilare librerie condivise (DLL) con runtime statico causerà problemi a causa di definizioni multiple di alcune cose. In alcuni casi con interfacce piccole i problemi possono essere evitati, ma il più delle volte non funziona. Quindi se hai bisogno di DLL, probabilmente avrai bisogno anche della ridistribuibile.
Se hai bisogno di ridistribuirlo, l'opzione comune è creare un programma di installazione che lo includa.
Dovrebbe anche essere possibile creare un piccolo antipasto che installerà il ridistribuibile (contenuto in risorse) e che avvierà il programma principale (anch'esso contenuto in risorse, probabilmente come DLL per evitare un nuovo processo). Non l'ho mai fatto So che Python lo fa con il py2exe , ma non so se esiste un semplice wrapper per farlo con il tuo programma C ++ .