View Full Version : [c++] Aiuto! Con Visual Studio 2005 l'eseguibile non parte se lanciato da altri pc!
doctorAle85
25-01-2008, 18:15
Scusate,
ho un grande problema...ho fatto un progetto con visual studio 2005 in c++ con l'utilizzo delle openGL! quando lancio il file .exe presente nella cartella debug che viene creata da vs2005 nel mio pc l'applicazione gira correttamente...
Se metto il progetto in qualsiasi altro pc, se provo a lanciare l'applicazione, quindi il file .exe presente in debug mi compare la schermata d'errore con scritto:
"impossibile avviare l'applicazione specificata. La configurazione dell'applicazione non è corretta. Una nuova installazione dell'applicazione potrebbe risolvere il problema."
Se però ricompilo il file .cpp negli altri pc e poi lancio il .exe presente in debug parte correttamente!:muro:
A me serve però che l'eseguibile parta direttamente con il doppio click, senza ricompilarlo!
Vi riassumo la struttura delle cartelle del progetto:
Progetto
->data
->debug
->immagini(sarebbero le texture)
->progetto
->debug
qui dentro ci sono i file .cpp, .h e il file vc++ project
->immagini
Sapete risolvere il problema?
grazie
AnonimoVeneziano
25-01-2008, 18:19
I programmi fatti col VC++ richiedono che i computer sui quali devono girare abbiano installato il vcredist.exe (un file con le librerie ridistribuibili di MS)
Se vuoi evitarlo devi fare il linking statico al tuo eseguibile, ma non so dirti la procedura precisa :)
Ciao
doctorAle85
25-01-2008, 18:27
I programmi fatti col VC++ richiedono che i computer sui quali devono girare abbiano installato il vcredist.exe (un file con le librerie ridistribuibili di MS)
Se vuoi evitarlo devi fare il linking statico al tuo eseguibile, ma non so dirti la procedura precisa :)
Ciao
Ci sono dei miei amici che hanno fatto progetti con vs2005 e quando mi hanno dato l'eseguibile partiva direttamente! ho chiesto ad alcuni e mi hanno detto che non hanno fatto niente di particolare al file .exe!:confused:
Preciso che nel pc dove ho fatto il progetto utilizzo windows vista!...non c'entrerà niente, però non si sa mai!
Mi sono accorto anche che quando utilizzo altri pc e vado nella cartella debug ci sono due file .ilk e .pdb la cui icona sembra tipo un pò tagliuzzata...boh, non so come spiegarvelo! sembra come se questi due file sono un pò corrotti!
AnonimoVeneziano
25-01-2008, 18:42
Questo è il link al file che ti serve per far andare il tuo programma sugli altri PC :
http://www.microsoft.com/downloads/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&DisplayLang=en
Installalo sui PC dove non parte.
Se vuoi farlo partire su tutti senza quel pacchetto devi abilitare il link statico. Non so la procedura precisa. Cerca su google o nelle impostazioni di Visual Studio nella sezione dedicata al linker vedi se trovi qualcosa
Ciao
doctorAle85
25-01-2008, 19:15
Questo è il link al file che ti serve per far andare il tuo programma sugli altri PC :
http://www.microsoft.com/downloads/details.aspx?FamilyID=32bc1bee-a3f9-4c13-9c99-220b62a191ee&DisplayLang=en
Installalo sui PC dove non parte.
Se vuoi farlo partire su tutti senza quel pacchetto devi abilitare il link statico. Non so la procedura precisa. Cerca su google o nelle impostazioni di Visual Studio nella sezione dedicata al linker vedi se trovi qualcosa
Ciao
grazie...ora provo!
...spero che riesco però a utilizzare il link statico!;)
doctorAle85
25-01-2008, 19:24
Non parte neanche con vcredist_x86 negli altri pc...che cavolo!
I problema dovrebbe essere dovuto a qualche file .dll, come ho letto girando su internet! eppure la glut32.dll l'ho messa anche nella cartella debug... boh
Aiuto!!!!!!:cry:
oltre ad abilitare il link statico verso il runtime di Visual C++ devi anche cannare il manifest file. vai sulle proprietà del progetto, poi Configuration Properties, poi seleziona la configurazione che ti interessa (presumibilmente Release), e setta le seguenti opzioni:
C/C++, Code Generation, Runtime Library, settala a Multi-threaded
Linker, Manifest File, Generate Manifest, settala a No
suppongo che non usi MFC visto che hai detto di usare glut32.
non sono sicurissimo che questo basti a farlo andare perché dovrei provare, in caso dicci che errori da.
PS: con questi due passi non è neanche necessario richiedere agli utenti di installare il redistributable.
doctorAle85
25-01-2008, 20:13
oltre ad abilitare il link statico verso il runtime di Visual C++ devi anche cannare il manifest file. vai sulle proprietà del progetto, poi Configuration Properties, poi seleziona la configurazione che ti interessa (presumibilmente Release), e setta le seguenti opzioni:
C/C++, Code Generation, Runtime Library, settala a Multi-threaded
Linker, Manifest File, Generate Manifest, settala a No
suppongo che non
Tutto quello che vi sto dicendo l'ho fatto nel pc dove ho realizzato il progetto.
Per il primo punto, già è settato a multi-threaded debug dll!
Settando a No mi si pianta il programma!
Mettendo il linkaggio statico (non so se ho fatto bene, dato che non sono riuscito a trovare una soluzione su internet che mi riguardi) mi da quest'errore dopo aver compilato e lanciato ed eseguito:;
"the specified file is an unrecognized or unsopported binary format"
Non so proprio come cavolo è...
ma non c'è un modo più semplice, per esempio un programmino che a partire dai file che crea visual studio, generi un file eseguibile che non crei tutti questi problemi?
Per il primo punto, già è settato a multi-threaded debug dll! -.-'
leggi bene quello che ho scritto...
doctorAle85
25-01-2008, 21:07
-.-'
leggi bene quello che ho scritto...
Quello che mi hai indicato, multi-threaded, scritto così non esiste! al massimo esiste multi-threaded (/MT).
Comunque anche selezionando questo tipo di multi-threaded, selezionando "no" dove hai indicato e mettendo in configuration properties->general->configuration type "static library" mi compila ma quando vado ad eseguire dice:
"unable to start program
xxxx.progetto\debug\progetto.lib"
Se vi può essere d'aiuto, anche se non dovrebbe azzeccarci un tubo, per necessità dovetti cambiare la proprietà character set da unicode a multicode!
:help:
Quello che mi hai indicato, multi-threaded, scritto così non esiste! al massimo esiste multi-threaded (/MT).
Comunque anche selezionando questo tipo di multi-threaded, selezionando "no" dove hai indicato e mettendo in configuration properties->general->configuration type "static library" mi compila ma quando vado ad eseguire dice:
"unable to start program
xxxx.progetto\debug\progetto.lib"
Se vi può essere d'aiuto, anche se non dovrebbe azzeccarci un tubo, per necessità dovetti cambiare la proprietà character set da unicode a multicode!
:help:
1) rimetti Unicode, anche se in realtà credo che nel tuo caso dovresti mettere semplicemente ANSI (o ASCII, non ricordo com'era)
2) io mica ti ho detto di compilare in forma di "static library"... così facendo tu hai generato non un eseguibile ma una libreria statica (infatti lui cerca di eseguire un file con estensione .lib, non .exe)
anche se in realtà credo che nel tuo caso dovresti mettere semplicemente ANSI (o ASCII, non ricordo com'era) sono andato a rivedere com'era: credo che nel tuo caso dovresti mettere "Not set", ad indicare che non stai utilizzando caratteri ne' Unicode ne' multibyte, ma semplici char del C/C++.
ma stai passando l'eseguibile compilato in debug?
devi compilare in release e passare quello!
doctorAle85
25-01-2008, 21:58
sono andato a rivedere com'era: credo che nel tuo caso dovresti mettere "Not set", ad indicare che non stai utilizzando caratteri ne' Unicode ne' multibyte, ma semplici char del C/C++.
Cosa cambia se metto not set?
...perchè non vedo dei cambiamenti togliendo multicode e mettendo not set...almeno nel mio caso!!!
doctorAle85
25-01-2008, 22:00
ma stai passando l'eseguibile compilato in debug?
devi compilare in release e passare quello!
Si...passavo quello presente in debug!
Se compilo in release si verifica un fenomeno strano...e cioè che l'animazione che viene fatta nell'applicazione risulta tipo accelerata rispetto alla compilazione in debug!...per esempio una camminata, se compilo in release risulta molto più accelerata!
Com'è questa cosa?...si può fare qualcosa?...xchè se è così lascio la compilazione in debug!...non mi va di ricambiare il codice dell'animazione...
Si...passavo quello presente in debug!
Se compilo in release si verifica un fenomeno strano...e cioè che l'animazione che viene fatta nell'applicazione risulta tipo accelerata rispetto alla compilazione in debug!...per esempio una camminata, se compilo in release risulta molto più accelerata!
Com'è questa cosa?...si può fare qualcosa?...xchè se è così lascio la compilazione in debug!...non mi va di ricambiare il codice dell'animazione...
i programmi vanno rilasciati in release, sopratutto perchè un eseguibile di debug si appoggia a librerie di debug che su un normale pc non di sviluppo non sono normalmente presenti.
un programma di debug è sempre più lento della corrispondente versione in release.
guarda anche la differenza di dimensione dei due eseguibili!
doctorAle85
25-01-2008, 22:48
i programmi vanno rilasciati in release, sopratutto perchè un eseguibile di debug si appoggia a librerie di debug che su un normale pc non di sviluppo non sono normalmente presenti.
un programma di debug è sempre più lento della corrispondente versione in release.
guarda anche la differenza di dimensione dei due eseguibili!
grazie dell'informazione...ma si può impostare in qualche modo la velocità dell'animazione come quella dell'eseguibile in debug?
Se non si potesse fare mi tengo l'eseguibile del debug...perchè altrimenti dovrei cambiare parecchio codice!
grazie dell'informazione...ma si può impostare in qualche modo la velocità dell'animazione come quella dell'eseguibile in debug?
Se non si potesse fare mi tengo l'eseguibile del debug...perchè altrimenti dovrei cambiare parecchio codice!
dipende dal codice che hai scritto
doctorAle85
26-01-2008, 15:59
Non si riesce a risolvere il problema!
Compilando in release mi cambia l'animazione e è troppo rischioso cambiare tutto il codice...
La cosa che mi sorprende è che per le altre tesine compilate in debug, senza accorgimenti strani, ne linkaggio statico e cavoli vari, il .exe a me parte.
Il mio eseguibile invece in altri pc no!
ho provato anche a mettere la libreria glut32.dll nella cartella con il .exe e non va!:muro: :muro: :muro: :muro:
...e sono convinto sempre più che è vista il problema, e in particolare il pacchetto aggiuntivo che magari setta qualche impostazione di default diversa...non so! vi posso assicurare che ad altre persone che hanno fatto progetti con xp e stessa versione di visual studio non da problemi!
Non si riesce a risolvere il problema!
Compilando in release mi cambia l'animazione e è troppo rischioso cambiare tutto il codice...
La cosa che mi sorprende è che per le altre tesine compilate in debug, senza accorgimenti strani, ne linkaggio statico e cavoli vari, il .exe a me parte.
Il mio eseguibile invece in altri pc no!
ho provato anche a mettere la libreria glut32.dll nella cartella con il .exe e non va!:muro: :muro: :muro: :muro:
...e sono convinto sempre più che è vista il problema, e in particolare il pacchetto aggiuntivo che magari setta qualche impostazione di default diversa...non so! vi posso assicurare che ad altre persone che hanno fatto progetti con xp e stessa versione di visual studio non da problemi! che errori ti da' all'avvio se lo compili facendo come ti ho detto io?
doctorAle85
26-01-2008, 19:20
che errori ti da' all'avvio se lo compili facendo come ti ho detto io?
come il primo errore che ho detto!
nel mio pc funzionava bene, ma negli altri non partiva proprio...
Invece compilando in release le cose sono migliorate, ma ho lasciato stare questa soluzione dato che l'animazione cambiava come già detto!
Invece passando la mia cartella ad un mio amico che ha xp e stessa versione di visual studio, se lo ricolpila va perfettamente in tutti i pc!
Non rimane che affermare che il problema è legato a Vista, e probabilmente a qualche settaggio diverso di default del compilatore!
come il primo errore che ho detto!
nel mio pc funzionava bene, ma negli altri non partiva proprio...
Invece compilando in release le cose sono migliorate, ma ho lasciato stare questa soluzione dato che l'animazione cambiava come già detto! allora non mi sembra molto difficile, basta che reimposti anche nella configurazione di Debug quelle due impostazioni che ti ho detto di mettere in quella di Release...
doctorAle85
26-01-2008, 22:10
allora non mi sembra molto difficile, basta che reimposti anche nella configurazione di Debug quelle due impostazioni che ti ho detto di mettere in quella di Release...
Non ti preoccupare...ti ringrazio lo stesso!
Ora ho risolto nell'altro modo, cioè ricompilandolo su xp!...in questo modo il .exe gira perfettamente anche in atri pc...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.