PureBasic - Урок, Създаване на динамична библиотека с подпрограми
Сега няма да обяснявам какво е динамична библиотека от подпрограми и за какво служат, тъй като това е извън обхвата на тази статия. Ще премина направо към въпроса (практика). В PureBasic изходният код на библиотеката с динамични подпрограми са обикновени процедури, но вместо оператораProcedureсе използва операторътProcedureDLLили операторътProcedureCDLL, ако библиотеката с динамични подпрограми трябва да бъде от типcdecl. Този оператор може да бъде последван от суфикс, указващ типа на променливата, която процедурата ще върне с помощта на оператора ProcedureReturn. Например, ако искате процедурата да върне текстов низ, т.е. низова променлива или константа, тогава трябва да посочите наставката .s, т.е.ProcedureDLL.s И ако искате да върнете дробно число от процедурата, която заема 4 байта в компютърната памет, тогава трябва да използвате наставката .f, която е съкращение за думата Float. Научете повече за типовете променливи. Ако не е указан суфикс (както в примерите по-долу), ще се използва типът променлива по подразбиране. В PureBasic преди версия 4.30 това беше тип Long, а в по-късните версии тип Integer.


В този пример има две процедури. Първият просто събира числата от променливитеaиbи връща резултата от събирането. Втората процедура показва поле за съобщение.
За да създадете динамична библиотека от подпрограми от този код, трябва да изберете елементаСъздаване на приложениев менютоКомпилаторСъздаване на приложениеТова ще създаде няколко файла, но сега се интересуваме от файл с DLL разширение, това е динамичната библиотека от подпрограми. А сега нека го използваме в нашата програма.
Отваря се функцията OpenLibrary (зарежда се в паметта, ако това е първото извикване)библиотека MyDLL.dll , която трябва да е в същата папка от тази програма. Ако не е било възможно да се отвори, ще се появи съобщение за това и програмата ще приключи. В случай на успешно отваряне, числата ще бъдат записани в променливи с именаaиb(стойностите им могат да бъдат всякакви). След това, използвайки функцията CallCFunction, функцията с имеPlusсе извиква от динамичната библиотека от подпрограми. Данните отAиBпроменливи се предават на него и върнатият резултат се поставя в променливатапроменлива В следващия ред, променливата на низнизще съдържа текста "a+b =" и текущата стойност на променливатарезултатът, конвертираща в String Form, чрез Struge функция. Тази функция ще покаже прозорец с текста от променливатаString. Когато този прозорец е затворен, функцията CloseLibrary ще затвори динамичната библиотека от процедури. Тъй като няма допълнителен код, програмата ще приключи.
Можете да изтеглите архива с всички файлове тук.
PS. Тук беше даден пример за създаване и работа с динамична библиотека от подпрограми в операционна система от семейството Windows, но всичко по-горе може да се припише на създаването на динамична библиотека от подпрограми за операционната система Linux, но трябва да използвате компилатор за тази платформа и да вземете предвид, че динамичната библиотека от подпрограми ще има разширениеSOТези примери ще работят в MacOS X и AmigaOS.