Bagikan melalui


Membuat Pustaka Dynamic-Link Sederhana

Contoh berikut adalah kode sumber yang diperlukan untuk membuat DLL sederhana, Myputs.dll. Ini mendefinisikan fungsi pencetakan string sederhana yang disebut myPuts. DLL Myputs tidak menentukan fungsi titik entri, karena ditautkan dengan pustaka run-time C dan tidak memiliki fungsi inisialisasi atau pembersihan sendiri untuk dilakukan.

Untuk membangun DLL, ikuti petunjuk dalam dokumentasi yang disertakan dengan alat pengembangan Anda.

Untuk contoh yang menggunakan myPuts, lihat Menggunakan Load-Time Dynamic Linking atau 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