Invio del progetto c ++ [chiuso]
Ho codificato un'app in c ++ utilizzando la libreria SFML. L'ho configurato in blocchi di codice per eseguire il programma. Diciamo che ora voglio inviare questa app a un mio amico, qual è il modo migliore per farlo in modo che non debba scaricare molte cose per eseguirlo?
Sto usando il compilatore MinGW.
Risposte
Crea un programma di installazione o un pacchetto. Per esempio; Su RedHat Linux vorresti creare un pacchetto RPM. Su Windows vuoi creare un file MSI. Qualunque cosa tu faccia, il pacchetto che crei dovrebbe raggruppare tutto ciò di cui la tua applicazione ha bisogno per essere eseguita e metterlo nelle posizioni corrette sul sistema di destinazione. Questo include il tuo eseguibile ma anche tutte le librerie che usi (comprese le librerie di runtime dei compilatori).
Nella maggior parte dei casi è sufficiente spedire il file .exe e tutte le sue dipendenze. In alcuni casi potresti anche dover spedire altri file necessari per eseguire l'applicazione come file di configurazione, immagini, icone ...
Puoi usare copypedepscon la -rbandiera dahttps://github.com/brechtsanders/pedeps per copiare il tuo .exe insieme ai suoi file .dll di dipendenza in una cartella vuota.
Quindi puoi semplicemente comprimere tutto in quella cartella e inviarlo a qualcuno che può semplicemente decomprimerlo ed eseguire il file .exe.
Oppure puoi creare un programma di installazione appropriato per distribuire gli stessi file.
Il tuo programma ha bisogno di alcuni .dlls per essere eseguito: alcuni sono quelli di sistema, alcuni vengono forniti con il compilatore e altri provengono dalle librerie che usi (SFML). Devi spedire tutti quei messaggi .dll(tranne quelli di sistema) con il tuo .exe, e dovrebbero essere nella stessa directory.
Non importa se crei un programma di installazione appropriato o invii al tuo amico un archivio zip. (Se si tratta di un archivio, potrebbe essere necessario estrarlo manualmente prima di eseguire il .exe.)
La domanda è come capire quali messaggi .dllspedire. Esistono diversi approcci:
Apri la console,
cddove ti.exetrovi, faiset PATH=e prova a eseguire l'eseguibile digitandone il nome. Dato che l'installazione del compilatore non è più inPATH, non dovrebbe vedere le.dlls presenti e dovrebbe lamentarsi della loro mancanza. Dopo averne fornito uno.dll, verrà richiesto il successivo.Un approccio più civile consiste nell'utilizzare uno strumento come
ntdlll'elenco di tutti.dllgli usi della tua app. Quindi copiali, ignorando quelli di sistema (che si trovano inC:\Windowso sottodirectory).
Notare che entrambi gli approcci si basano sul fatto che non ci siano messaggi estranei .dllin C:\Windowso sottodirectory; ad alcuni installatori scritti male piace inserire i propri file .dll. Per verificarlo, fai un elenco di tutti .dlli messaggi forniti con il tuo compilatore (dovrebbero essere nella stessa directory di gcc.exe) e quelli che provengono dalle tue librerie (SFML). Quindi cerca le .dlle con lo stesso nome in C:\Windowse sottodirectory e, se ne trovi, rimuovile.