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 riportate nella documentazione inclusa negli strumenti di sviluppo.

Per un esempio che usa myPuts, vedere Using Load-Time Dynamic Linking or Using Run-Time Dynamic Linking.For an example that using myPuts, see Using Load-Time Dynamic Linking or Using Run-Time Dynamic Linking.

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