I'm a student trying to teach myself C. I know the basics of it and now I would like to write a simple DLL using the WinAPI so I can use it in another BASIC-like language.

I'm using CodeBlocks with the compiler it comes with (since I can't afford to invest in any other compilers/IDEs at this point)

Basically, what I'm trying to do is kind of wrap the PlgBlt Function (here is what I have so far):

#include <windows.h>

BOOL WINAPI __declspec(dllexport) LibMain (HINSTANCE hInst, DWORD Reason, LPVOID Reserved)
{
  if(Reason==DLL_PROCESS_ATTACH)
	{
  	return   TRUE;
  	}

  if(Reason==DLL_PROCESS_DETACH)
  	{
  	return   TRUE;
  	}

  return   FALSE;
}

BOOL __declspec(dllexport) __stdcall Blit (HDC dest, HDC image, HBITMAP mask, int width, int height, int pointA, int pointB, int pointC)
{
    POINT points[] = {pointA, pointB, pointC};

    BOOL blitResult = PlgBlt(dest, points, image, 0, 0, width, height, mask, 0, 0);

    return blitResult;
}

But it says that I'm trying to reference an undefined reference to PlgBlt. From what I read at MSDN (here) the PlgBlt function should be available to me since I've included windows.h.

I'm still quite new to all of this, so if there are any other errors in there throwing it off, please let me know!

Any help would be much appreciated!

Did you link with Gdi32.lib, or just include windows.h? All headers do is declare names so that the code will compile. Compilation and linking are two different steps in the build process. If you declare a name and do not define it, the code will compile but fail to link because there is no actual thing attached to the name. That is what an undefined reference means. You are referencing something in your code that does not exist.

Thank you very much for responding, Tom!

That must be it. I don't know how to link a library in. Do you have any tips? I'm searching all through codeblocks, but I'm still new to compiling/debugging the C way.

Well thank you very much sir! That did the trick. With a few changes, everything compiles fine!

Found the library and the settings right where they should be. :icon_mrgreen:

This question has already been answered. Start a new discussion instead.