Originariamente inviato da Il Pazzo
scusa ma cosa intendi per definizioni? la dichiarazione?

Allora.. io nel mio file d'include ho solo messo quei prototipi di funzione e quella dichiarazione (vedi il primo messaggio... lì c'è tutto l'header).... non è corretto?
Quella dichiarazione che hai fatto è una definizione ... alloca cioè memoria per la variabile.
Essendo messa in un header che viene incluso da più sorgenti, ogni modulo oggetto (il file .obj) conterrà la variabile hWnd. A quel punto il linker si trova con più file oggetto che contengono lo stesso simbolo hWnd e ...... bam.

A questo punto mi sorge spontanea una domanda: quella variabile hWnd ti serve che sia unica e globale a tutto il progetto? O che ogni sorgente abbia la "sua" variabile hWnd (distinta dalle altre)??

Se ti serve globale al progetto, allora metti come globale (fuori dalle funzioni) e dentro 1 solo sorgente:

HWND hWnd;

e poi nell'header che tutti includono metti:

extern HWND hWnd;

Se invece vuoi che ogni sorgente abbia la "sua" variabile hWnd, allora puoi mettere nel header:

static HWND hWnd;

... sebbene tale modo di includere una variabile static non mi piaccia per niente!