Как написать DLL на чистом Си

 Пишем DLL на чистом Си в среде Dev-CPP

    Динамически подключаемые библиотеки (dynamic link libraries, DLL) это
библиотеки функций к которым могут подключаться разные процессы. DLL
используют для:

  1. экономии оперативной памяти при совместном их использовании несколькими процессами;
  2. экономии времени пребывания DLL в оперативной памяти;
  3. реализации возможностей многоязыкового программирования.
    Для объявления экспортируемых функций используется следующий синтаксис:

__declspec(dllexport) void nameFunc()

При создании DLL в Dev CPP, автоматически создаётся учебный пример HelloWorld.

Так объявляется функция в заголовочном файле:

 
 

Так пишется реализация функции в исходнике:




 

 Подключение DLL к процессу и вызов функций


 Всё закомментировал, как подключить DLL к проекту. При подключении вывожу адрес функции.



Я забыл заскринить результат выполнения этой дллки, так что давайте посмотрим следующий пример :)


 Пишем свою DLL

 Напишем простейший калькулятор, который будет выполнять операции сложения, вычитания, умножения и деления.


Вызываем функции:

Для вывода адреса функций и названий функций написал отдельную процедуру.

Для вывода результата написал процедуру show_result.


Результат выполнения DLL


Так как функции возвращают целое число, в результате деления результат округляется (5 / 2 = 2.5 ~ 2)


DLL Export Viewer

Разные среды программирования могут по-разному упорядочивать функции в библиотеке и использовать разные методы искажения имен, поэтому рекомендуется проверять содержимое DLL соответствующими утилитами, например tdump или DLL Export Viewer.


Как видим, среда разработки Dev CPP не исказила имена функций

Комментарии

Популярные сообщения из этого блога

Использование регистров MMX в программировании

Как создать трейнер в Cheat Engine