ПредишенСледващото

Библиотека - е компилиран код, който осигурява функциите на работещо приложение, и предоставя данните за нея. Библиотеките могат да бъдат свързани статично или динамично, те обикновено имат разширение DLL и LIB съответно. Статични библиотеки (например, по време на работа библиотека С), свързани с прилагането по време на компилация и стават част от получената изпълним файл. Библиотеката за кандидатстване товари DLL, когато е необходимо (обикновено стартира). Един DLL библиотека може да се зареди друг DLL, и динамично му се позовават.

По-долу са основните предимства на DLL.

Всички приложения могат да използват едно копие на диска.

Изпълними по-малки приложения.

Способността да се разделят на големи проекти. DLL приложения и библиотеки разработчиците трябва само да се споразумеят за съответните части от интерфейса. Този интерфейс се изнася в DLL.

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

С помощта на DLL можете да добавите функции и команди в Microsoft Excel.

Ето какво трябва да се създаде DLL:

Компилаторът за конвертиране на изходния код в един обект, който е съвместим с оборудването.

Builder да добавите кода на статични библиотеки и DLL-създадете изпълним файл.

Можете да създадете DLL на няколко езика, като например C / C ++, Pascal и Visual Basic. От изходния код програмен интерфейс на Excel - C и C ++, в тази документация се считат само тези два езика.

Когато компилирате съставител DLL проект и свръзка трябва да се знае какви функции да изнася, да осигури достъп до тях в заявлението. Този раздел описва възможни начини.

При съставяне на код компилатори източник обикновено се променят имената на функцията. За да направите това, те обикновено се добавят знаци в началото или в края на името. Този процес се нарича име украса. Трябва да се гарантира, че приложението зарежда DLL, може да разпознае името на изнесения функция. За да направите това, може да се наложи да инструктира свръзката да съвпада с името разширена с просто име износ. Това може да бъде името на източника или на другия.

Метод за декориране на името зависи от езика, и начини за извикване на функция, определена от компилатора, т.е. споразумението. Д. Call. Standard съгласие вътрешнопроцесна призовава за Windows, който се използва в DLL - това WinAPI. заглавни файлове на Windows, в която е определен като WinAPI declarator използване Win32 __stdcall.

Функция в DLL-файла, за да изнася Excel (лист функция, функция, съответстваща на макро лист, или обичай команда) трябва да се използва винаги призвание конвенция WinAPI / __stdcall. В дефиницията на функцията, трябва изрично да се даде възможност на WinAPI показалка. по подразбиране в компилатора Win32 използва конвенцията за __cdecl обажда. наричано още WINAPIV.

Можете да кажете на свръзката за необходимостта да изнася функции, както и външната си име по няколко начина:

Поставете функция в DEF-файл, след като ключовата дума износа и добавяне на линк към файла в опцията DLL проект по време на свързване.

Използвайте declarator __declspec (dllexport) в дефиницията на функцията.

Използвайте директивата за #pragma предпроцесорни да изпратите съобщение на свръзката.

В проекта, можете да използвате трите метода, и те са подкрепени от съставителя и свръзката, но това не трябва да изнася една функция повече от един начин. Например, да предположим, че DLL съдържа два модула на изходния код, C и C ++, които съдържат две функции за износ - съответно my_C_export и my_Cpp_export. За простота приемем, че функцията се числов аргумент и връща двойно-прецизна информация от същия вид. Следващите раздели описват възможностите за износ функции, използвайки всеки един от тези методи.

С DEF-файл

Имайте предвид, че функцията за C е украсена, но DEF-файл свързваща изрично инструктирани да предостави тази функция чрез използване на името на изходния код (в този пример). Builder имплицитно изнесени C ++ функции с помощта на името на изходния код, така че в DEF-файл евентуално да включва разширена име.

Споразумение за функцията API повиквания към 32-битова Windows предоставя следните функции украсили C: function_name става _ function_name @ п. където п - броя байтове, изразено като десетично число, всички получени аргументи, броят на байта за всеки закръглени до най-близкото кратно на четири.

Размерът на всички указатели в Win32 - четири байта. Типът на връщане не се отразява името на декорация.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!