Posts tagged ‘Windows’

21 luglio 2008

Link simbolici sotto Windows

di Spinus

Uso Xp solo più a lavoro, ma ogni tanto mi riserva qualche sorpresa! Ho scoperto oggi che è possibile creare dei link simbolici, tra directory! Purtroppo non è possibile effettuare link a file (diversamente da Unix), ma è sempre meglio di nulla, no?

La cosa che mi ha lasciato sconcertato è che non esiste alcun comando per eseguire questa utilissima operazione, anzi, non sono nemmeno documentate le API che permettono di utilizzare questa opzione del filesystem NTFS! Fortunatamente c’è chi si è messo a studiare le strutture dati di NTFS e ha creato Junkction Link Magic che permette di creare i link in modo veloce ed intuitivo!

Per maggiori dettagli tecnici, vedere la pagina di Mike Nordell

11 giugno 2008

Rigenerare cache icone in Windows

di Spinus

Questo è un piccolo trucco che ho scoperto per caso tra le guide del supporto di Microsoft…

Quando la cache delle icone si rovina e le icone dei file sono errate o scambiate tra loro basta entrare nel pannello di controllo andare sulle proprietà dello schermo e cambiare la profondità dei colori, da 32 a 16 o da 16 a 24(…insomma ci siamo capiti); dopodiché si riporta la profondità dei colori al valore di default e il gioco è fatto, le icone saranno di nuovo normali (senza dover installare inutili programmini…)

Tag:
15 maggio 2008

Java Jni e MinGW

di Spinus

Per esigenze lavorative mi sono scontrato con Jni, che permette a codice Java di chiamare o di essere chiamato da applicazioni native (scritte in C o C++).
Il procedimento per scrivere una classe che utilizza metodi nativi è un po’ macchinoso, ma è abbastanza semplice:

  • si scrive una classe Java che contiene lo scheletro dei  metodi che dovranno essere eseguiti (questi metodi devono essere preceduti dalla keyword native)
  • si compila la classe:
    javac nomeclasse.java
  • si crea l’header che contiene i prototipi delle funzioni:
    javah -jni nomeclasse
  • si implementano i metodi (aggiungendo tutte le librerie necessarie)
  • si compila il file sorgente e si crea una dll:
    gcc -I"C:\Program Files\Java\jdk1.6.0_02\include" -I"C:\Program Files\Java\jdk1.6.0_02\include\win32" -c nome_scheletro_generato -o nome_file_dll.o
    gcc -shared -Wl,--kill-at -o nome_file_dll.dll nome_file_dll.o eventuale_file.lib
  • si importa la dll nella classe java e da quel momento i metodi potranno essere invocati come fossero metodi di una qualsiasi classe java:static
    System.loadLibrary ("nome_file_dll");

E MinGW cosa centra? Ho avuto un piccolo problema utilizzando MinGW, perché il loader di Java non ne voleva sapere di caricare la dll che avevo creato…dopo un po’ di hacking ho scoperto che MinGW usava un name mangling diverso da quello che si aspettava il loader, quindi ho dovuto aggiungere l’opzione -Wl,–kill-at (per una spiegazione più approfondita vedere i link in nota).

P.S. ho testato questa guida sotto Windows, ma con le opportune modifiche si può utilizzare anche sotto Linux, in questo caso, però, bisognerà controllare il metodo di chiamata di default di gcc (_stdcall)

Riferimenti :
http://www.javaworld.com/javaworld/javatips/jw-javatip23.html

http://www.willus.com/mingw/yongweiwu_stdcall.html

http://forum.java.sun.com/thread.jspa?threadID=5200233

13 maggio 2008

WinMerge

di Spinus

Ecco un utilissimo programma per chi sviluppa sotto Windows: Winmerge

Permette di visualizzare graficamente e intuitivamente le differenze tra due file e farne il merge; inoltre può operare ricorsivamente su directory e, quindi, permette di visualizzare tutti i file modificati in progetti di grandi dimensioni!

Vista file:

Vista directory:

6 marzo 2008

CMake e Windows

di Spinus

Avete seguito la breve guida su CMake e adesso volete compilare il vostro programma sotto Windows, ma come fare senza installare pesanti programmoni per sviluppare (detti anche IDE) ?

E’ molto semplice, basta usare MinGW!

Come installo MinGW?

Dalla pagina di download di MinGW scaricare MinGW Automated Installer che si occuperà di scaricare tutte gli archivi necessari (selezionare i linguaggi che si vogliono utilizzare e mingw make)

E il debugger?

La soluzione più semplice è installare la versione di GDB disponibile sul sito di MinGW

Nota: scaricare sempre la versione “current release”, così si è sicuri di utilizzare versioni stabili.

Una volta installati i programmi necessari non resta che aggiungere alla variabile d’ambiente PATH, il percorso contentente gli eseguibili di MinGW: (aggiongere dir)

Come compilare?

Creare il makefile con il comando

cmake -G”MinGW Makefiles” .

compilare utilizzando il comando make

Gdb non è molto comodo? Come posso debuggare in modo più semplice?

In questo caso bisogna installare Eclipse o un altro IDE che supporti i makefile di MinGW e Gdb!

Importare i sorgenti in Eclipse si può creare un progetto make C/C++ e importare “da filesystem” i file che compongono il programma da compilare (probabilmente ci sarà qualche settaggio da rifinire).
Per debuggare il programma basterà creare una configurazione di debug e impostare come debugger Gdb o mingw debugger e, poi, sarà sufficiente impostare i breakpoint voluti e far partire l’esecuzione!

P.S. questa guida è un bozza, ho seguito le procedure qui descritte e tutto funziona, ma quando ho tempo proverò su un altro pc per assicurarmi di non aver dimenticato nulla!

UPDATE: Esiste un frontend grafico per gdb che funziona sotto windows: si chiama insight. Per utilizzarlo basta scaricare mingw-insight-6.3.exe (o altre versioni) e scompattarlo nella directory di MingGW. Insight contiene tra l’altro anche gdb.

Io l’ho provato ed è molto pratico!