Develop a Hello World alert for Windows on Arch Linux

Only proceed when all possibilities to avoid Windows have dried up. Proceed with care and suspicion: Clippy takes no prisoners.

Step 1: Hello World

Write the program.

helloword.cpp

#ifndef UNICODE // Not strictly necessary, but good practice
#define UNICODE
#endif

#include <windows.h> // Use Windows libraries

int WINAPI wWinMain(
    HINSTANCE hInstance,     // Handle to current instance
    HINSTANCE hPrevInstance, // Handle to previous instance of application
    PWSTR pCmdLine,          // Command line arguments as Unicode string
    int nCmdShow)            // Open minimised, maximised, or normally
{
    MessageBox (
        NULL,            // Handle to owner of the message box
        L"Hello world!", // Message to be displayed
        L"Hello",        // Pop-up title
        MB_OKCANCEL);    // Contents and behaviour of pop-up
    return 0;
}

Further documentation on wWinMain and MessageBox.

Step 2: GNU Compiler Collection

Compile the program.

Running gcc without any modifications will not work, as we require supplementary Windows libraries.

sudo pacman -S mingw-w64-headers mingw-w64-gcc

Then if we run

x86_64-w64-mingw32-g++ helloworld.cpp

we will get an error about an undefined reference to `WinMain' . What we’re missing is the flag -municode.

x86_64-w64-mingw32-g++ -municode helloworld.cpp

Out pops a.exe. We have now created our first Windows program on Arch Linux!

Step 3: Wine

Run the program.

Wine allows us to run Windows programs on Linux. To install Wine on Arch Linux, we will first have to enable the multilib repository by uncommenting two lines in /etc/pacman.conf.

/etc/pacman.conf

# [multilib]
# Include = /etc/pacman.d/mirrorlist

Then update the repositories, and install the following packages:

sudo pacman -Syu
sudo pacman -S wine wine-mono

Run

wine a.exe

and bask in triumph.

windows.webp

Further steps

Write more programs.

Try following tutorials on creating more involved Windows programs.