Създаване и свързване на DLL

Сега ще прецени какво е необходимо DLL (Dynamic Link Library - Динамичен библиотека kompanuemaya) и как да ги създаде. DLL- е кода на населеното съхранява във файл с разширение .dll на. Кодът може да се използва от други програми, но proramma библиотеката posebe не е така. В общи линии, а след това, динамични библиотеки връзка са Nabão skompilirovannyyh функции. Но yutih библиотека има свои собствени характеристики, така например, ако kakkieto две или повече програми на Windows едновременно изпълнява и използва функциите в DLL, паметта винаги ще бъде само една библиотека, като по този начин осигурява икономично количество памет. Зареждане на библиотеката в паметта може да бъде статичен и динамичен.







С статично натоварване DLL се зарежда автоматично, когато стартирате приложението, то понякога се използва. Такава DLL съдържа изнесени функции, описание на които е във файла библиотека внос (внос библиотека на файла - .lib). За да използвате статично натоварване имате на разположение на етап на програмата dodklyuchit .lib си DLL файл. В C ++ Builder, това намалява до включването в проекта .lib подаде чрез mendzherov проекти.

Когато diamicheskoy товар можете да заредите DLL, ако е необходимо, да разтовари това се включи, когато не е необходимо. Но да се работи с такива библиотеки по-трудно, отколкото статична. Помислете sozzdanie и DLL използвате статично натоварване.

статично натоварване

Първо направете проект (File / New / DLL). Ще бъде създадена по проекта, съдържащ следното:

и дълъг коментар Предупреждавам ви, че имате нужда за работа snei способността ви DLL да предостави postvku някои DLL, ако използвате случаи String класа.







За износ и внос от DLL, трябва да използват Моди fikatory __export и __import съответно. Но може да се използва в C ++ Builder нов __delspec ключова дума () с параметри dllexport и dllimport съответно. Вие разбирате, че с цел да се esportirovat функция от библиотеката Eugen един удар с глава на файла с с описание _delspec (dllexport) за износ на функции за импортиране на функции в приложението, което ще трябва да се сложи подобно на поведението на заглавния файл, но с _delspec (dllimport) описания, които доста неудобни. Този проблем е решен лесно: добавяне на библиотеката към заглавната част на файла, както следва:

Оригинален файл DLL запис #define BUILD_DLL, вместо __declspec (dllexport) напиши DLL_EXP. Когато пишете на програмата добавите линията #define BUILD_APP, и просто се свържете с глава DLL файл с.

Пример DLL: P.cpp файл

Ако натиснете Run след приключване на строителството ще видите съобщение, че програмата не е mozhnt бъде изпълнена (разбира се). Сега пиша на обаждащия се. Vtomzhe каталог sozdayde нов проект (File / New Application) във формата, поставете един бутон и манипулатор OnClick събитие. Вие трябва да изпълним slduyuschee:

Както можете да видите, така че вашата DLL може да се наложи да се използват три файлове: самия DLL, горен и библиотека .lib файл.

динамично натоварване

Динамично натоварване е много по-трудно. Въпреки това, при динамично натоварване изисква само себе си DLL (не всяко ненужно .lib или файл заглавието, въпреки че тя може да се ispolbzovat да опише изнесени функции за predpolagemogo потребител).

Нека разгледаме един пример за това как да се произвежда динамично натоварване. Създаване на нова DLL проктит и въведете следното в него:

Ckompiliruyte проект, което ще доведе до установен DLL.

Сега се създаде проект, подобен на поведението на проекта за кандидатстване да се използва статично натоварване (форма с бутон бутон и боравене със събития OnClick) по-долу показва кода на приложение: (Unit11.cpp)

започнат проект, когато щракнете върху бутона трябва vydavatsya Съобщените. Сега ще разгледаме как работи.

Имайте предвид, че можете да посочите точен prizagruzke mestopolozhnie библиотеката (neobezatelno в същата директория, в които прилагането).