|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Mar 2009
Messaggi: 14
|
Cambiare l'icona ad un eseguibile.
Vorrei sapere se esiste un metodo per cambiare l'icona ad un eseguibile generato da Dev-C++ a partire da un file sorgente in c. In pratica volgio solo cambiare l'icona all'eseguibile e non creare un progetto all'interno del quale ovviamnete potrei dargli l'icona.
Premetto che ho gia scaricato vari MB dei programmi più svariati che si trovano in rete ma nessuno di essi ha funzionato. Qualcuno sa aiutarmi? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
il MinGW non é il compilatore piu adatto per Windows, non sono neanche sicuro che abbia un resource compiler, che é quello che servirebbe a te: l'icona dell'eseguibile é la prima che Windows trova tra le risorse dello stesso.
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
MinGW ha un resource compiler, windres, ultimamente ci ho sviluppato da Linux un'applicazione Win32 con tanto di risorse!
![]() Resta da vedere però se sia compreso nel package di Dev-C++... Ad ogni modo, se devi solo cambiare l'icona di un eseguibile forse fai prima con qualcosa come ResourceHacker o un buon editor di icone (anticamente avevo MicroAngelo che mi sembra lo facesse, fai una ricerca e troverai sicuramente tante alternative gratuite). ciao ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Oct 2008
Messaggi: 199
|
Prova PE Explorer
![]()
__________________
E ora sta banda non c'è modo di fermarla sti due fratelli ne hanno combinata un'altra e dopo la scorribanda festeggeremo all'alba |
![]() |
![]() |
![]() |
#5 |
Junior Member
Iscritto dal: Mar 2009
Messaggi: 14
|
Grazie a tutti, ma come dicevo ho provato i più svariati programmi, primi tra tutti resHacker e micro angelo ma non hanno funzionato. Seppure cambiano tranquillamente le icone ad altri eseguibili, tipo gli exe di programmi installati, per i file compilati da me non danno risultato. Per questo motivo ho creato questa discussione, sperando che passasse qualcuno competente in materia che avesse già avuto e risolto la mia stessa problematica, purtroppo non penso si risolva semplicemente trovando un programma in rete...
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Non si è ben capito come viene generato il tuo eseguibile e in cosa sia diverso dagli altri... Dacci una mano a darti una mano.
![]() Hai un eseguibile, vuoi metterci un'icona: bene, in che modo lo stai facendo? Dici che è tuo, quindi puoi aggiungere a piacimento le risorse e ricompilarlo? ciao ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! Ultima modifica di DanieleC88 : 17-03-2009 alle 11:43. |
![]() |
![]() |
![]() |
#7 | |
Junior Member
Iscritto dal: Mar 2009
Messaggi: 14
|
Quote:
forse non si è capito bene: dunque si tratta di un semplice file che genero con il compilatore dev c++...avendo a disposizione il file sorgente ovviamente potrei ricompilarlo a piacimento. Quello che voglio è creare un file exe però con un'icona che ci metto io e senza portarmi dietro altri file che servono per dargli l'icona, altrimenti potrei fare direttamente il progetto con dev o con visual studio. |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Ok, che tipo di progetto è? O compili il file "da solo"?
Se crei un progetto Windows crea un file di risorse (ad esempio "risorse.rc") con dentro scritto: Codice:
MAINICON ICON "icona.ico" ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#9 |
Junior Member
Iscritto dal: Mar 2009
Messaggi: 14
|
Forse è meglio che faccio un esempio. Diciamo che io scrivo il più classico dei programmi
#include <iostream.h> int main (){ cout << "ciao"; system("PAUSE"); } e lo compilo col nome ciao. Nella cartella dove si trova il file ciao.cpp verrà generato anche un file ciao.exe. Quello che voglio fare è prendere tale file e cambiargli l'icona, senza appoggiarmi ad altri file, in modo tale che copiando unicamente il file ciao.exe sul computer di mio fratello che ha 3 anni egli veda un'icona colorata in luogo di quella classica degli eseguibili e restandone attratto ci clicchi di sopra... Spero questo esempio stupido possa chiarire la mi richiesta. Grazie per l'aiuto. |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
a parte che l'esempio di codice é sbagliato... comunque DanieleC88 ti ha spiegato perfettamente cosa fare.
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
![]() In più il codice di esempio che hai postato è, effettivamente, sbagliato. ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
![]() |
![]() |
![]() |
#12 |
Junior Member
Iscritto dal: Mar 2009
Messaggi: 14
|
L'esempio di codice può essere obsoleto ma non è assolutamente sbagliato visto che lo ho appena compilato con Dev!!! Per il resto ho seguito pedissequamente le istruzioni di Daniele ma l'icona è rimasta sempre la stessa dell'eseguibile...
|
![]() |
![]() |
![]() |
#13 | ||
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
Quote:
Codice:
1 ICON "icona.ico" ovviamente ricordati di mettere un file "icona.ico" nella directory di compilazione. |
||
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
No, se stai compilando un file singolo Dev-C++ ti compila quel file, ne genera un file oggetto, e poi fa il linking di quell'oggetto in un file eseguibile. Hai bisogno di inserire il sorgente in un progetto Win32 (e mi sembra, tra l'altro, che Dev-C++ ti faccia scegliere automaticamente l'icona dell'eseguibile quando il progetto è Win32). Se Dev-C++ non te lo fa fare automaticamente, devi inserire anche il file .rc come ti ho spiegato prima: verrà generato un file oggetto anche per lui, e il linking all'eseguibile verrà fatto a partire da entrambi i file oggetto.
![]() Ultima nota: se un compilatore ti fa compilare, non ti assicura che il codice sia perfettamente corretto o conforme agli standard: magari ti fa compilare perché un particolare costrutto esiste solo su quel compilatore (è un'estensione degli standard) o perché il compilatore ha dei bug. ![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
![]() le estensioni al linguaggio e politiche di tolleranza da parte del compilatore sono volute. prima che arrivi l'obiezione: si lo so, basta guardare il sistema di tracking dei bug del progetto del gcc per vedere che i bug del compilatore ci sono eccome; la "prima regola" di cui sopra é volutamente esagerata: non si contano piu le situazioni in cui il programmatore pensa che sia un bug del compilatore e con un'analisi piu approndita scopre che é solo colpa sua, é successo anche a me dopo quasi un decennio di esperienza in C++ (quella volta ero veramente in un vicolo cieco, mi sembrava un comportamento troppo assurdo, il debugger sembrava dirmi che il programma eseguiva una cosa totalmente diversa da quanto scritto nel sorgente; non mi ero piu trovato in una situazione simile per parecchi anni, ero seriamente convinto che fosse un bug del compilatore e invece indovina un po'? era colpa mia; dopo 8 anni di programmazione C++ era ancora colpa mia). |
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Lo so, lo so... intendevo solo dire che una "compilazione pulita" non implica un codice corretto. E uno dei motivi potrebbe (potrebbe...) essere un bug del compilatore.
![]()
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 400
|
Quote:
Codice:
1 ICON "icona.ico" Codice:
lc programma.c -o programma.exe Codice:
Usage: lc [-c] [compiler flags] files... [linker flags] ie: lc -g2 hello.c -o hello.exe -s Codice:
Lcclnk command line options. Options are introduced with the character '-' or t he character '/'. -o <filename> Sets the name of the output file to file name. Insert a space between the o and the name of the file. -errout <filename> Write all warnings/error messages to the indicated file name. -subsystem <subsystem> Indicate the type of output file. Console or windows application -stack-commit <number> With this option, you can commit more pages than one (4096 bytes). -stack-reserve <number> The default stack size is 1MB. This changes this limit. -dynamic Use lcclibc.dll as default library and link to it dynamically instead of linking to libc.lib. -dll This option indicates to the linker that a .dll should be created instead of an .exe. -map <filename> Indicates the name of the map file.This option is incompatible with the -s option. -nolibc Do not include the standard C library. -s Strips all symbolic and debugging information from the executable. -version nn.nn Adds the version number to the executable. -errout=<filename> Write all warnings or errors to the file name indicated.Note that no spaces should separate the name from the equals sign. -nounderscores When creating a DLL for Visual Basic for instance, it is better to export names without underscores from a DLL. -entry <fnname> Option fo setting the DLL entry point to the given function -version Print the version name Specifico che i file icona.ico, risorse.rc, programma.c li ho messi tutti nella stessa cartella dove ci sono i file del compilatore (lc.exe, lcclnk.exe ecc...), quindi non penso che il problema sia che il compilatore non trovi il file.rc, dato che è tutto nella stessa cartella. Inoltre già che ci sono ho un’altra piccola richiesta: è possibile fare eseguire il programma senza che si apra la finestra della console? In pratica il programma ha solo lo scopo di lanciare un altro programma(detto così sembra non avere molto senso, ma vi assicuro che ho i miei buoni motivi). Il risultato è che si vede aprirsi e chiudersi la finestra nera della console per una frazione di secondo, cosa che se è possibile preferirei evitare. Ringrazio tutti anticipatamente per le risposte, se in alcuni punti non sono stato chiaro chiedete pure. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:04.