Создание простой динамически подключаемой библиотеки (DLL)


Пример ниже - исходный код, необходимый для создания простой DLL, Myputs.dll. Она определяет простую печатающую строку функцию, называемую myPuts. DLL Myputs не определяет функцию точки входа, потому что она связана с С-библиотекой периода выполнения программы и не имеет каких-либо выполняемых своих собственных функции инициализации или очистки.

Чтобы создать DLL, следуйте инструкциям в документации, включенной в ваши инструментальные средства разработки.

Пример в котором используется myPuts, смотри в статьях Использование динамического связывания выполняемого при загрузке  или Использование динамического связывания периода выполнения.

// Функция myPuts записывает строку с символом конца ('0') в
// стандартное устройство вывода данных.
 
// Для механизма экспорта здесь используется метод 
// __declspec(export), поддерживаемый Microsoft Visual Studio,
// однако и любым другим методом экспорта, поддерживаемым
// вашим разработанным окружением он может быть заменен.
 
 
#include <windows.h>
 
#define EOF (-1)
 
#ifdef __cplusplus    // Если используется код C++, 
extern "C" {          // мы должны экспортировать C-интерфейс
#endif
 
__declspec(dllexport) int myPuts(LPTSTR lpszMsg)
{
    DWORD cchWritten;
    HANDLE hStdout;
    BOOL fRet;
 
    // Получим дескриптор стандартного устройства вывода.
 
    hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
    if (INVALID_HANDLE_VALUE == hStdout)
        return EOF;
 
    // Запишем строку с нулем в конце для стандартного
    // устройства вывода данных.
 
    while (*lpszMsg != '\0')
    {
      fRet = WriteFile(hStdout, lpszMsg, 1, &cchWritten, NULL);
        if( (FALSE == fRet) || (1 != cchWritten) )
            return EOF;
        lpszMsg++;
    }
    return 1;
}
 
#ifdef __cplusplus
}
#endif

 

Назад в оглавление
На главную страницу

Hosted by uCoz