PDA

View Full Version : [Visual Studio] Creare eseguibile portabile


davser
03-02-2009, 14:53
Tramite Visual Studio ho realizzato un programmino in C che utilizza librerie opencv e opengl e vorrei renderlo disponibile come eseguibile senza che debba essere compilato.

Ho provato a creare un progetto di tipo Setup ma sinceramente non ho capito come fare per ottenere ciò che mi serve.

Qualcuno può darmi una mano?

vizzz
03-02-2009, 15:08
Tramite Visual Studio ho realizzato un programmino in C che utilizza librerie opencv e opengl e vorrei renderlo disponibile come eseguibile senza che debba essere compilato.

Ho provato a creare un progetto di tipo Setup ma sinceramente non ho capito come fare per ottenere ciò che mi serve.

Qualcuno può darmi una mano?

puoi anche solo rilasciare l'exe con le relative dll associate, ricordandoti di compilare il modalità "Release".
Se vuoi anche creare un'installer devi usare la funzione "Setup" ma sinceramente io non l'ho mai provata.

davser
03-02-2009, 15:15
puoi anche solo rilasciare l'exe con le relative dll associate, ricordandoti di compilare il modalità "Release".

Ho già fatto esattamente così e nel mio computer ovviamente funziona ma in altri computer, no. Anche con lo stesso sistema operativo.

vizzz
03-02-2009, 15:55
forse è necessario installare anche i runtime...che versione di visual studio stai usando?

davser
03-02-2009, 16:06
visual studio 2008

vizzz
03-02-2009, 16:29
visual studio 2008

prova ad installare questo sugli altri pc dove non parte il programma.

http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en

davser
03-02-2009, 17:48
E' proprio quello che vorrei evitare :(

Su Internet siamo circondati da programmi e programmini che chiunque può eseguire facilmente con o senza installazione... vorrei provarci anch'io senza avere la necessità di dipendere da ulteriori installazioni.

yggdrasil
03-02-2009, 17:51
basta linkare staticamente tutte le librerie dentro l'eseguibile o comunque fornire le varie dll all'interno della stessa cartella.

se provi ad eseguire l'eseguibile compilato in modalità release su un altro pc che capita?

fero86
03-02-2009, 18:05
click destro sul progetto, Properties, in Configuration seleziona la configurazione di Release, poi vai su C/C++, Code Generation, e imposta Runtime Library a Multi-threaded (/MT). l'eseguibile finale sará un po' piu grosso ma avrai eliminato la dipendenza dall'ultima versione del runtime di Visual C++.

in alternativa dovresti far capire a Visual Studio che quando genera il Manifest File deve metterci la direttiva che imposta la dipendenza con una versione piu vecchia del runtime, ma non so come si faccia; elimina la dipendenza e vai tranquillo.

PS: tutto il problema esiste solo se il programma finale deve girare su XP; Vista e Seven dispongono giá dell'ultima versione del runtime.

davser
03-02-2009, 18:48
click destro sul progetto, Properties, in Configuration seleziona la configurazione di Release, poi vai su C/C++, Code Generation, e imposta Runtime Library a Multi-threaded (/MT). l'eseguibile finale sará un po' piu grosso ma avrai eliminato la dipendenza dall'ultima versione del runtime di Visual C++.


Fatto ma il problema persiste. Viene visualizzato un messaggio di errore "applicazione non correttamente inizializzata ecc. ecc.".

Sia su XP che su Vista.

davser
03-02-2009, 18:54
basta linkare staticamente tutte le librerie dentro l'eseguibile o comunque fornire le varie dll all'interno della stessa cartella.

Ho già messo le dll che servono, che poi sono quelle riguardanti opencv: highgui, cv e cxcore. Infatti la prima volta che ho provato a eseguire il programma sul mio pc al di fuori di visual studio, mi diceva che mancavano le dll... le ho quindi inserite nella stessa directory e ha funzionato.

vizzz
03-02-2009, 18:57
Ho già messo le dll che servono, che poi sono quelle riguardanti opencv: highgui, cv e cxcore. Infatti la prima volta che ho provato a eseguire il programma sul mio pc al di fuori di visual studio, mi diceva che mancavano le dll... le ho quindi inserite nella stessa directory e ha funzionato.

prova a postare uno screenshot dell'errore sull'altro pc

davser
03-02-2009, 19:15
prova a postare uno screenshot dell'errore sull'altro pc

In questo momento non posso accedere all'altro pc, comunque l'errore era "applicazione non correttamente inizializzata (0xc0150002)".