Condividi tramite


Creazione di una libreria di Dynamic-Link semplice

L'esempio seguente è il codice sorgente necessario per creare una DLL semplice, Myputs.dll. Definisce una semplice funzione di stampa di stringhe denominata myPuts. La DLL Myputs non definisce una funzione del punto di ingresso, perché è collegata alla libreria di runtime C e non dispone di funzioni di inizializzazione o pulizia proprie da eseguire.

Per compilare la DLL, seguire le istruzioni nella documentazione inclusa negli strumenti di sviluppo.

Per un esempio che utilizza myPuts, vedere Utilizzo del Load-Time Collegamento Dinamico o Utilizzo del Run-Time Collegamento Dinamico.

// 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