Partager via


Création d’une bibliothèque de Dynamic-Link simple

L’exemple suivant est le code source nécessaire pour créer une DLL simple, Myputs.dll. Il définit une fonction d’impression de chaîne simple appelée myPuts. La DLL Myputs ne définit pas de fonction de point d’entrée, car elle est liée à la bibliothèque runtime C et n’a aucune fonction d’initialisation ou de nettoyage propre à effectuer.

Pour générer la DLL, suivez les instructions de la documentation incluse dans vos outils de développement.

Pour obtenir un exemple qui utilise myPuts, consultez Utilisation de la liaison dynamique Load-Time ou Utilisation de Run-Time liaison dynamique.

// The myPuts 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.
 
 
#include <windows.h>
 
#define EOF (-1)
 
#ifdef __cplusplus    // If used by C++ code, 
extern "C" {          // we need to export the C interface
#endif
 
__declspec(dllexport) int __cdecl myPuts(LPCWSTR lpszMsg)
{
    DWORD cchWritten;
    HANDLE hConout;
    BOOL fRet;
 
    // Get a handle to the console output device.

    hConout = CreateFileW(L"CONOUT$",
                         GENERIC_WRITE,
                         FILE_SHARE_WRITE,
                         NULL,
                         OPEN_EXISTING,
                         FILE_ATTRIBUTE_NORMAL,
                         NULL);

    if (INVALID_HANDLE_VALUE == hConout)
        return EOF;
 
    // Write a null-terminated string to the console output device.
 
    while (*lpszMsg != L'\0')
    {
        fRet = WriteConsole(hConout, lpszMsg, 1, &cchWritten, NULL);
        if( (FALSE == fRet) || (1 != cchWritten) )
            return EOF;
        lpszMsg++;
    }
    return 1;
}
 
#ifdef __cplusplus
}
#endif