Ridistribuibili Microsoft Visual C ++, requisiti software? [chiuso]

0

Durante la compilazione con Visual Studio C ++, ho notato che è necessario uno specifico MSV C ++ Redist, a seconda della versione di Visual Studio con cui si compila. Il necessario ridistribuibile è necessario su macchine senza di esso. Altrimenti senza i redist mancanti gli errori MSVCPxxx.dll sono rapidi.

Esiste un modo per aggirare la necessità della ridistribuibile? O c'è un modo per comprimere quello all'interno del programma che stai creando, che si tratti di DLL, eseguibile, ecc.?

    
posta FatalSleep 14.07.2014 - 02:50
fonte

1 risposta

4

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 ++ .

    
risposta data 14.07.2014 - 09:10
fonte

Leggi altre domande sui tag