My friend and I are developing a C software, he's developing it on Windows, I'm contributing and I use Xubuntu. As far as I know, Qt supports C++ and not C, and as far as I know GTK sucks on Windows, and I heard horror stories of people developing GTK software on Windows. I'm looking for:

  • A cross-platform C GUI (Windows, Linux and Mac, 32 bit and 64 bit)
  • Free and open source, I do not want to worry about licensing
  • Maintained
  • Modern looking
  • Lightweight
  • Easy to learn, I want to learn it quickly
  • Well documented, and has sample applications (examples)
  • Support team or forums with active members or active IRC channel
  • Big bonus if I don't have to download an SDK in order to use a GUI library, all I want is to create some windows with few buttons.
  • 1. If you know C, what is wrong with C++? 2. You probably won't find something better than Qt with the features you are looking for.
    – Cornelius
    Commented May 6, 2014 at 12:57
  • 1
    @Cornelius i know c++ too, it's just my partner in the project, he's a retired programmer, spent years doing C and would like to use the language he knows best, he doesn't know C++ and would like to do it in C if possible
    – Lynob
    Commented May 6, 2014 at 13:05
  • 1
    If he knows C then he already knows a lot about C++. Here are the main differences cprogramming.com/tutorial/c-vs-c++.html
    – Cornelius
    Commented May 6, 2014 at 13:08
  • 1
    @Cornelius I sent him the link lets see if that's enough to convince him, but still the question stands, it will be nice if there's such gui
    – Lynob
    Commented May 6, 2014 at 13:59
  • Also send him this link en.wikipedia.org/wiki/…
    – Cornelius
    Commented May 6, 2014 at 14:01

4 Answers 4


If you can accept HTML5/JS as GUI then take a look at the Chromium Embedded Framework (CEF):


The base CEF framework includes support for the C and C++ programming languages.

CEF supports javascript bindings and callbacks, so you can communicate asynchronously both ways between C <> JS.

Here is an example on how to use CEF C API (a github project of mine): https://github.com/CzarekTomczak/cefcapi

  • Spotify uses this for example
    – Gourneau
    Commented May 13, 2014 at 0:03

It is worth taking a look at wxWidgets - it is a cross platform GUI library written in C++ but it can be used from C and also has bindings for python, ruby, perl and others.

  • Cross Platform - Yes Windows/Linux/OS-X/Others - 64 & 32 bit.
  • Free & Open Source - Yes and with a permissive, (LGPL compatible), licence.
  • Maintained - Actively developed and maintained as it has been since 1992.
  • Modern Looking - Actually wxWidgets looks native on most platforms because where possibly it acts as a wrapper arround the native widgets so on XP it looks XP on Win 7 it looks Win 7, etc.
  • Lightweight - Very for the reason above.
  • Easy to learn - Lots of documentation, examples, demos and online resources.
  • Well documented and examples - see the line above.
  • Support team - Very active forums and mailing list, including the main authors.
  • Don't need and SDK - Yes you use your existing development tool chain to build from source or you can download binary distributions for:
    • Windows as wxMSW DLLs for the selected compilers:
      • Visual C++ 2008-2013
      • TDM-GCC 4.7 and 4.8
    • Ubuntu / Debian Packages
    • Fedora / openSUSE Packages
  • 1
    I know that another answer has already been accepted for this but still feel it is worth a mention. Commented Jan 24, 2015 at 16:46

Also :

  • This is just a list of links, can you detail what they are, main features and the like? Is there any one you can recommend?
    – Alejandro
    Commented May 7, 2022 at 15:20

You can try NAppGUI. www.nappgui.com

Uses ANSI C, its open source and connect with core technologies in each platform (Win32, Cocoa, GTK3)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.