====== D Lang - crosscompilare applicazione Gtk4 per windows ====== Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **// 16/07/2025 10:30 //** // // Serve avere installato Wine con il compilatore **dmd** e avere il bundle [[https://www.freemedialab.org/listing/Gtk_for_windows/|gtk4-runtime]] (ricavato con msys2 con lo script [[programmazione:msys2:script_per_creare_bundle|Uno script per creare un bundle per il nostro eseguibile]]) ===== Preparativi ===== Sulla macchina con linux dove lavoriamo impartiamo il comando dub init myapp gid:gtk4 Creerà il progetto e installerà (compilerà) le dipendenze necessarie in fase di compilazione . \\ Incollare un hello world gtk4 scritto in D sul file source/app.d [[programmazione:d:gid:hello_world|Hello world in gtk4 e linguaggio D usando Gid]]. compilare il progetto con dub impartendo il comando wine dub build Abbiamo creato così il nostro esebuibile, ma per distribuirlo servirà metterlo in una cartella assieme al bundle gtk4, sullo stesso livello degli altri file. ==== dub.json ==== { "authors": [ "fabio" ], "copyright": "Copyright © 2025, fabio", "dependencies": { "gid:gtk4": "~>0.9.7" }, "description": "A minimal D application.", "license": "MIT", "name": "gtk4-win", "targetType":"executable", "targetPath": "./build", "lflags":[ "-subsystem:windows", "-entry:mainCRTStartup" ] } le direttive : ... "lflags":[ "-subsystem:windows", "-entry:mainCRTStartup" ] ... fanno in modo che non si apre la finestra della console di windows. Puo' essere utile disattivarle in fase di debug. Potremmo abilitarle anche solo su windows: "lflags-windows-x86_64":[ "-subsystem:windows", "-entry:mainCRTStartup" ] ==== la funzione main ==== Devo dire a windows che uso il subsystem per le applicazioni grafiche attraverso l'entrypoint del WinMain. [[programmazione:d:gid:hello_world##non_far_comparire_la_finestra_di_console_su_widows_quando_lanci_la_tua_applicazione|Hello world in gtk4 e linguaggio D usando Gid]]