# An example for cross-platform standalone GUI application

**URL:** <https://discourse.julialang.org/t/an-example-for-cross-platform-standalone-gui-application/128822>\
**Category:** General Usage\
**Tags:** ui, gui\
**Created:** [May 8, 2025, 12:51am UTC](https://discourse.julialang.org/t/an-example-for-cross-platform-standalone-gui-application/128822 "2025-05-08T00:51:55Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![uwestoehr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/uwestoehr/32/216201_2.png) [@uwestoehr](https://discourse.julialang.org/u/uwestoehr)\
**Post date:** [May 8, 2025, 12:51am UTC](https://discourse.julialang.org/t/an-example-for-cross-platform-standalone-gui-application/128822/1 "2025-05-08T00:51:55Z")

</div>

As I promised in [the thread about](https://discourse.julialang.org/t/step-by-step-instruction-and-example-how-to-create-standalone-applications-for-windows-with-a-g-ui/128274/1) the instruction how to create standalone applications with a GUI, here is as example a complete GUI program that was created using _[PackageCompiler](https://github.com/JuliaLang/PackageCompiler.jl)_ + _[Lazarus](https://en.wikipedia.org/wiki/Lazarus_(software))_.  
(I selected Lazarus as UI because it is platform-independent and one is quick to make a fully-featured GUI.)

The program is part of a package I wrote for a new algorithm to cluster data (called “Iteridense”). I wrote the algorithm completely in Julia as a module. This module is compiled to a library as described in the above mentioned thread. This library is used by the Lazarus program.

- You find the Julia module as package [here](https://github.com/donovaly/Iteridense-package).
- Inside of this package you find the module adapted for compilation as C-callable library [here](https://github.com/donovaly/Iteridense-package/tree/main/IteridenseCLib).
- The Lazarus program can be found [here](https://github.com/donovaly/Iteridense-package/tree/main/IteridenseCLib/IteridenseClustering).
- If you are interested to have a look at the final Lazarus program without compiling it, you can download from the [latest release](https://github.com/donovaly/Iteridense-package/releases) assets the file _IteridenseClustering.zip_. There you find in its _bin_ folder the file _IteridenseClustering.exe_ file that can directly be executed under Windows (no installation or admin permissions necessary.

---

<div class="post-metadata">

**Author:** ![jonathanBieler](https://avatars.discourse-cdn.com/v4/letter/j/82dd89/32.png) [@jonathanBieler](https://discourse.julialang.org/u/jonathanBieler)\
**Post date:** [May 8, 2025, 11:18am UTC](https://discourse.julialang.org/t/an-example-for-cross-platform-standalone-gui-application/128822/2 "2025-05-08T11:18:32Z")

</div>

I tested it and it works really smoothly, impressive 👌

---

<div class="post-metadata">

**Author:** ![uwestoehr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/uwestoehr/32/216201_2.png) [@uwestoehr](https://discourse.julialang.org/u/uwestoehr)\
**Post date:** [May 9, 2025, 1:53am UTC](https://discourse.julialang.org/t/an-example-for-cross-platform-standalone-gui-application/128822/3 "2025-05-09T01:53:26Z")

</div>

> [@jonathanBieler](#):
>
> impressive

Nice to hear that you like it.

For information: Lazarus just released a new major version. I tried it now and can say it is worth the upgrade.  
My recommendation: At the first start Lazarus 4.0 asks you about modern IDE and modern forms designer. My recommendation is to use the modern IDE, but the “classic” forms designer because for the forms I find it important to see them exactly as you will see them later in the program.

---

<div class="post-metadata">

**Author:** ![MDSW](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@MDSW](https://discourse.julialang.org/u/MDSW)\
**Post date:** [May 9, 2025, 2:07am UTC](https://discourse.julialang.org/t/an-example-for-cross-platform-standalone-gui-application/128822/4 "2025-05-09T02:07:10Z")

</div>

I really appreciate the work you’ve done to demonstrate how to do this, as well as the documentation. As Julia’s compilation options improve, this will continue to get better!
