Alright I wrote a winamp visualization pretty lame one but I am new to windows and winamp. Winamp won't recognize the.dll file in the plugins folder can anyone help me with it.

#include <windows.h>
#include <stdlib.h>
#include "vis.h"

char szAppName[] = "Morts Mod";
int cxClient, cyClient;
int config_x, config_y;

void config_read(struct winampVisModule *mortmod); // reads the configuration
void config_write(struct winampVisModule *mortmod); // writes the configuration
void config_getinifn(struct winampVisModule *mortmod, char *ini_file); // makes the .ini file filename

void config(struct winampVisModule *mortmod);
winampVisModule *getModule(int which);
int init(struct winampVisModule *mortmod);
int Mortrender(struct winampVisModule *mortmod);
void quit(struct winampVisModule *mortmod);


LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
HWND hwnd;

HDC memDC;
HBITMAP memBMP,
oldBMP;

winampVisHeader hdr = { VIS_HDRVER, "MortMod", getModule };

winampVisModule mod1 =
{
"MortMod",
NULL,
NULL,
0,
0,
25,
25,
0,
2,
{ 0, },
{ 0, },
NULL,
init,
Mortrender,
quit
};

#ifdef _cplusplus
extern "C" {
#endif
__declspec( dllexport ) winampVisHeader *winampVisGetHeader()
{
return &hdr;
}
#ifdef __cpluscplus
}
#endif



winampVisModule *getModule(int which)
{
switch(which)
{
case 0: return &mod1;
default: return NULL;
}
}


int init(struct winampVisModule *mortmod)
{
config_read(mortmod);

WNDCLASS wc;
memset(&wc,0,sizeof(wc));
wc.lpfnWndProc = WndProc;
wc.hInstance = mortmod->hDllInstance;
wc.lpszClassName= szAppName;
wc.hbrBackground= (HBRUSH) GetStockObject(WHITE_BRUSH);

if(!RegisterClass(&wc))
{
MessageBox(mortmod->hwndParent, "Error registering window class", "MortMod Error", MB_OK);
return 1;
}

hwnd = CreateWindow(szAppName,
"Mort Mod",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
mortmod->hwndParent,
NULL,
mortmod->hDllInstance,
NULL);

if(!hwnd)
{
MessageBox(mortmod->hwndParent, "Error creating window", "VisMod Error", MB_OK);
return 1;
}

SetWindowLong(hwnd, GWL_USERDATA,(LONG)mortmod);

memDC = CreateCompatibleDC(NULL);
memBMP = CreateCompatibleBitmap(memDC, cxClient, cyClient);

ShowWindow(hwnd, SW_SHOWNORMAL);
return 0;
}

void config(struct winampVisModule *mortmod)
{
MessageBox(mortmod->hwndParent,"This module is Copyright (c) 1997-1998, Justin Frankel/Nullsoft\n"
"-- This is just a demonstration module, it really isn't\n"
" supposed to be enjoyable --","Configuration",MB_OK);
}


int Mortrender(struct winampVisModule *mortmod)
{
int x, y;
HDC hdc;
HPEN hpen;

for(y = 0; y < 2; y++)
{
hpen = CreatePen(PS_SOLID, rand() % 10, RGB( rand () % 255, rand () % 255, rand () % 255));
SelectObject(memDC, hpen);
for(x = 0; x < 576; x++)
{
if(mortmod->waveformData)
{
MoveToEx(memDC, rand() % cxClient, rand() % cyClient, NULL);
LineTo(memDC, rand() % cxClient, rand() % cyClient);
}
}
hdc = GetDC(hwnd);
BitBlt(hdc, 0, 0, cxClient, cyClient, memDC, 0, 0, SRCCOPY);
ReleaseDC(hwnd, hdc);
}
return 0;
}

void quit(struct winampVisModule *mortmod)
{
SelectObject(memDC, oldBMP);
DeleteObject(memDC);
DeleteObject(memBMP);
DestroyWindow(hwnd);
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_CREATE : return 0;
case WM_SIZE:
cxClient = LOWORD(lParam);
cyClient = HIWORD(wParam);
return 0;
case WM_PAINT:
{
PAINTSTRUCT ps;
RECT r;
HDC hdc = BeginPaint(hwnd, &ps);
BitBlt(hdc, 0, 0, cxClient, cyClient, memDC, 0, 0, SRCCOPY);
EndPaint(hwnd, &ps);
}
return 0;
case WM_DESTROY: PostQuitMessage(0); return 0;
}
return 0;
}


void config_getinifn(struct winampVisModule *mortmod, char *ini_file)
{ // makes a .ini file in the winamp directory named "plugin.ini"
char *p;
GetModuleFileName(mortmod->hDllInstance,ini_file,MAX_PATH);
p=ini_file+strlen(ini_file);
while (p >= ini_file && *p != '\\') p--;
if (++p >= ini_file) *p = 0;
strcat(ini_file,"plugin.ini");
}


void config_read(struct winampVisModule *mortmod)
{
char ini_file[MAX_PATH];
config_getinifn(mortmod,ini_file);
config_x = GetPrivateProfileInt(mortmod->description,"Screen_x",config_x,ini_file);
config_y = GetPrivateProfileInt(mortmod->description,"Screen_y",config_y,ini_file);
}

void config_write(struct winampVisModule *mortmod)
{
char string[32];
char ini_file[MAX_PATH];

config_getinifn(mortmod,ini_file);

wsprintf(string,"%d",config_x);
WritePrivateProfileString(mortmod->description,"Screen_x",string,ini_file);
wsprintf(string,"%d",config_y);
WritePrivateProfileString(mortmod->description,"Screen_y",string,ini_file);
}