TSourceCode SourceCode2

Якщо Ви зайшли сюди, то ви - раціональний програміст, який ще й дбає про користувача :) Насправді використання динамічних бібліотек DLL дозволяє підвищити швидкість програми і ємність коду в кілька разів! Отже, почнемо.

Навіщо ми це все зробили.

Наше завдання не полягає в тому, щоб вдаватися в деталі використання DLL пам'яті і в іншу нісенітницю. Ми лише пояснимо, як зробити таку бібліотеку, яка б полегшила роботу і підвищила швидкість програми. Усі кроки створення будуть підкріплені прикладами. Другий мотив нашого дії - це майже повна відсутність матеріалів використання DLL в Help-е.

Спочатку був Project.

// Тут еспортуйте Ваші функції у форматі:

extern "C" __declspec(dllexport) double Function(int arg1, int arg2, int arg3, char arg4, і.т.д.); // де замість Double може бути Int, і char, і AnsiString, і void: тобто. той формат, який повинен мати повернене значення

Що? Де? і Як?

Тож на чому ми зупинилися? Ах да! Тепер потрібно описати задекларовані функції у файлі 'ім'я_проекту_dll.cpp'. Саме в ній слід додати #include "" на все, що програма використовує, наприклад #include , щоб керувати візуальними компонентами бібліотеки. Далі у тілі програми, тобто. після #include-ів, але перед функцією int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) розміщуйте свої функції, які з такою старанністю експортували у файлі заголовка. Так, до речі, не забудьте написати #include "ім'я_проекту_dll.h", тобто. підключити заголовок, а також рядок USELIB("MEMMGR.LIB"); інакше нічого не працюватиме. Далі пишіть усі декларації функцій (перед їх описом) та все.

Хочу використовувати функції з DLL!

А хто не хоче?Це просто! Просто увімкніть файл заголовка у форму, з якої використовується бібліотека, далі в Project Source після USEFORM ("smthng"); Додати

Далі спочатку лінкуєте DLL, а потім - проект. З проекту їх використовувати як завжди, наприклад:

Ось і вся методика! Якщо хтось хоче докладніше, то ось вихідники:

Програма вважає обсяг куба за трьома його вимірами:

double Calculator(int x, int y, int z);

double Calculator(int x, int y, int z)

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)

extern "C" __declspec(dllexport) double Calculator(int x, int y, int z);

Функція, яка вважає:

Ось і все, що ми хотіли Вам розповісти. Дякую за увагу!