Създаване и редактиране на DLL файлове, с които
Как да създадете или редактирате DLL?
Просто ми трябва линк към тази програма, тогава ще се справя сам.
|
Чакал | |
21 август 2005 г |
Mndya… Сега офлайн Група: Oldtimer Публикации: 1010 Репутация: 23 Присъединил се: 8 юни 05 г. Онлайн: localhost | вампирБоже. Горният DLL по същество е изпълним файл (EXE), само който няма входна точка, а просто предоставя (експортира) редица функции, дефинирани в него. Така че има много програми за създаване на DLL файлове... Например C++, Delphi, Asm... |
Цитат:В Microsoft® Windows® библиотеките за динамично свързване (DLL) са модули, които съдържат функции и данни. DLL се зарежда по време на изпълнение от своите извикващи модули (.EXE или DLL). Когато DLL се зареди, той се нанася в адресното пространство на извикващия процес.
Интерфейсът за приложно програмиране (API) на Microsoft® Win32® е внедрен като набор от библиотеки за динамично свързване, така че всеки процес, използващ API на Win32, използва динамично свързване.
|
вампир | |
22 август 2005 г |
Metalhead Сега офлайн Група: Oldtimer Публикации: 646 Репутация: 10 Присъединил се: 13 август 05 г. Онлайн: ../ | JackalОткъде мога да изтегля безплатно горепосоченото, например C++ или Delphi? Нямам нищо друго освен Q-Basic на моя компютър! |
|
Юра | |
22 август 2005 г |
|
Офлайн сега Група: Admin Публикации: 4771 Репутация: 35 Присъединил се: 6 януари 03 г.
Искам да ви напомня, че warez е забранен във форума. Така че за всеки случай...
|
Чакал | |
22 август 2005 г |
Mndya… Сега офлайн Група: Oldtimer Публикации: 1010 Репутация: 23 Присъединил се: 8 юни 05 г. Онлайн: localhost | Можете да закупите почти безплатно... Или можете да инсталирате Linux - ще има GNU C ++, обаче, тогава въпросът е - защо имате нужда от DLL в Linux Още по-добре, намерете някъде тема за Assembler! С него можете не само да създавате DLL файлове, но и да ги редактирате!ЮраИ без изделия! |
|
Kerberos | |
7 декември 2005, 21:22 |
Офлайн сега Група: Newbie Публикации: 4 Репутация: 0 Присъединил се: 7 дек. 05
Библиотеките с динамични връзки (DLL) се използват за намаляване на размера на изпълним файл чрез отделяне на някои функции в отделен файл. Освен това функциите от DLL могат да използват различни модули за зареждане, което е особено важно за живота на Windows (например KERNEL32.DLL съдържа функции за управление на паметта на процеси и нишки). Следният синтаксис се използва за писане на експортирани функции: __declspec(dllexport) void nameFunc(); При компилиране, наред с други неща, се създават файлове с *.LIB и *.DLL разширения, които съдържат експортирани функции. Включването на DLL в C++ Builder е възможно както изрично, така и неявно. За имплицитно свързване добавете ред като този към секцията с директиви: #pragma link “nameFile.lib” и добавете описание на прототипа на функцията към секцията с прототипи: void nameFunc(); При имплицитно свързване функцията се извиква по име,файлове с разширения *.LIB и *.DLL. Библиотеката е прикрепена към процеса, когато процесът се зарежда и разтоварва с процеса. Явното свързване изисква използването на функциите WINAPI LoadLibrary() и GetProcAddress(). В този случай функцията се извиква от номера, който й е присвоен при създаването на DLL. C++ Builder подрежда експортираните DLL функции по азбучен ред по техните имена. Номерът на функция в DLL може да бъде получен с помощта на помощната програма tdump с ключ -ee. Функцията LoadLibrary() приема име на библиотека като параметър и връща променлива от тип HINSTANCE. Функцията GetProcAddress() има следния прототип: void *GetProcAddress (HINSTANCE, const char *); тя взема променлива от тип HINSTANCE и символна константа и връща указател към функцията. Списъците по-долу демонстрират създаване, имплицитно и явно свързване на DLL. //Пример за създаване на DLL #include #pragma h drstop int WINAPI DllEntryPoint(HINST ANCE hinst, unsigned long reason, void*) return 1; > //По-горе е DLL заглавка, автоматично генерирана double dblValue(double); double halfValue(double); __declspec(dllexport) int AreturnValue (bool); __declspec(dllexport) int CreturnValue(bool); __declspec( dllexport) int BreturnValue(bool); int CreturnValue(bool i) i= true; return(2); > int BreturnValue(bool i) i= true; return(3); > int AreturnValue(bool i) i= true; return(1); > двойна dblValue(двойна стойност) < върната стойност * стойност; >; двойна полустойност(двойна стойност) < върната стойност / 2.0; > |
//Пример за имплицитно свързване на DLL #ifndef useDllU1H #define useDllU1H #include #include #include #include