Exporting the Windows DLL through the .lib and .dll files




// Project name: mydllpro, Source file name: mysrcdll.cpp, generating mydllpro.dll, mydllpro.lib...

// The mydll() function writes a null-terminated string to the standard output device...

// The export mechanism used here is the __declspec(export) method supported by Microsoft Visual Studio, but any

// other export method supported by your development environment may be substituted.


// For WinXp, don't forget to add Advapi32.lib library if needed...

#define _WIN32_WINNT 0x0501

#include <windows.h>

#include <stdio.h>


#define EOF (-1)

#ifdef __cplusplus // If used by C++ code,

extern "C" { // we need to export the C interface



__declspec(dllexport) int mydll(LPTSTR lpszMsg)


DWORD cchWritten;

HANDLE hStdout;

BOOL fRet;


printf("-This is mydll.dll file lol!-\n");

// Get a handle to the standard output device.

hStdout = GetStdHandle(STD_OUTPUT_HANDLE);




// failed to get the handle, give some message, get error code, just exit...

printf("GetStdHandle(), invalid handle, error: GetLastError().\n");

return EOF;



printf("GetStdHandle(), standard handle is OK.\n");


// Write a null-terminated string to the standard output device.

while (*lpszMsg != '\0')


fRet = WriteFile(hStdout, lpszMsg, 1, &cchWritten, NULL);


if ((fRet == FALSE) || (cchWritten != 1))

// If something wrong just exit or provide meaningful message/error code...

return EOF;

// else, write more...




return 1;


#ifdef __cplusplus




// The created DLL need other program to run. Before other program can import/run/call mydll.dll, you need to copy

// the mydllpro.lib and mydllpro.dll to appropriate folders. Those lib and dll file should be in the ../debug folder.

// For my Windows XP pro SP2 machine, the mydllpro.lib has been copied to folder: C:\Program Files\Microsoft Visual Studio 8\VC\lib

// and mydllpro.dll has been copied to folder: C:\WINDOWS\system32

// Then we are ready to use the DLL for next example.


Output example:




Compiler: Visual C++ Express Edition 2005

Compiled on Platform: Windows Xp Pro SP2

Target platform: none, just for learning and fun

Header file: Standard and Windows

Additional library: Windows Platform SDK

Additional project setting: Set project to be compiled as C.

Project->your_project_name Properties->Configuration Properties->C/C++->Advanced->Compiled As: Compiled as C Code (/TC)

Other info: This is a DLL project. non-CLR or unmanaged.

Need to add Advapi32.lib (Advapi32.dll) to the project. Click the Project menu->Select the your_project_name Properties...sub menu->Expand the Configuration Properties folder on the left pane->Expand the Linker subfolder->Select the Input subfolder->Select the Additional Dependencies field on the right pane->Click the ... at the end of the field->Type in 'Advapi32.lib' in the empty pane->Click the OK button->Click the OK button second time to close the project Properties dialog.

To do: Exporting the Windows DLL using the .lib and .dll files

To show: The Win32 C program example on using the Dynamic Link library 




C and C++ Programming Resources | C & C++ Code Example Index