# undefined reference to `__imp_CreateSolidBrush'

## Issue

Trying to use CreateSolidBrush to change a window background color.
I’ve included wingdi.h, I believe I’ve linked gdi32.lib ( however I converted gdi32.lib to a gdi32.a by using LIB2A, and I wonder if this may be an issue? ).

I wouldn’t mind using another function but I worry this could be come a re-occuring issue if I’m not able to find a solution.

Some relevant code:

``````#include <stdio.h>
#include <windows.h>
#include <wingdi.h>

#include <main.h>

DWORD CreateMainWindow(void)
{
.............

WNDCLASSEXA WindowClass = { 0 };

WindowClass.hbrBackground = CreateSolidBrush(RGB(200, 200, 200));

.............
}
``````

I use a function to easily compile

``````int Compile()
{
................

int result = 0;

char *include = "C:\\Users\\Coding\\C\\src\\include";
char command[256];

if(snprintf(
command,
sizeof(command),
"gcc -o main -I%s  -l gdi32 -L%s main.c", include, link) >= sizeof(command))
{
//exception catching and handling
}
else
{
system(command);
}

return result;
}
``````

I have no reason to believe the file isn’t being linked as I’m not receiving an error.

Also I’m only using Notepad++, mingw64, and command prompt.

## Solution

Well the answer was extremely simple, linkages and includes must come after the file.

``````
C:\User> gcc main.c -lgdi32 -I<include path> -o main

``````

If this was obvious then I apologize, hopefully this helps another confused individual