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);
Функція, яка вважає:
Ось і все, що ми хотіли Вам розповісти. Дякую за увагу!