[ :o) @ 16.01.2005. 23:54 ] @
Pocinjem ozbiljno da radim na kompjuteru i naravno nailazim na mnogo nejasnih pojmova. Neke sam skontao ali za dll, znam da su bitne, ozbiljne ali ne znam kakva im je funkcija, sturktura... Mozda sam prerano poceo da se hvatam za ovu tematiku, ali mozda i uspem nesto, uz neciju ljubaznu pomoc...
[ `and @ 17.01.2005. 00:10 ] @
http://www.google.com/search?h...mp;oi=defmore&q=define:DLL
[ Milos Stojanovic @ 17.01.2005. 00:31 ] @
Ukratko: DLL ti je skup funkcija i klasa.

Jedan prost primer gde se dobro dođe DLL: Recimo da pises skup aplikacija koje rade različite stvari (npr. neka 3D igrica, zatim njen level editor i njen unit editor), ali svima je zajedničko da iscrtavaju neki animirani objekat na ekran. Onda napraviš klasu koja radi iscrtavanje objekata na ekran, i umesto da je ubacuješ u svaku aplikaciju posebno, ti smestiš tu klasu u DLL, a onda iz tog DLLa "pozivaš" tu klasu svaki put kada ti zatreba iz bilo koje od aplikacija.

Što se tiče same strukture, prost DLL praviš kao i običan exe program, ali izostaviš entry point aplikacije (nemaš main() f-ju), i za svaku klasu za koju hoćeš da bude dostupna aplikacijama izvan DLLa dodaješ dllexport. Pogledaj ključne reči dllimport i dllexport na MSDNu recimo
[ :o) @ 18.01.2005. 12:31 ] @

Znam za "define" u google-u, procitao sam ali mi i dalje bese nejasno. Hvala u svakom slucaju.
[ leka @ 30.01.2005. 16:50 ] @
Ako u zivotu budes morao da radis sa vise kompajlera onda ce se DLL prica pretvoriti u nocnu moru. Na srecu trebalo bi da noviji C++ ABI (2.0) to malo "sredi" kada se svi proizvodjaci kompajlera usaglase sa ovim standardom. Koliko znam GNU GCC, Intel C/C++, SUN-ov ne-znam-kako-se-zove navodno podrzavaju C++ ABI 2.0. Ne znam za Microsoft-ov C/C++ kompajler, niti za Digital Mars-ov ili OpenWatcom...

Da sada ne bih uvodio neke nove pojmove koje bi trebalo objasniti pokusacu da prostim recima objasnim sta je DLL (Dynamic Linking Library). U pitanju je kolekcija funkcija iz tvog programa koje ti kao programer sakupis na jedno mesto (u jedan DLL fajl) iz jednog vrlo prostog razloga - zelis da te funkcije neka druga osoba (ili Ti u nekom drugom projektu) iskoristi, a da ne mora ponovo da kompajlira isti taj kod iz koga je sam DLL nastao.
Postoji jos nekoliko razloga zasto ima smisla praviti DLL, ali o njima nema smisla pricati sada...
[ Boyka @ 03.01.2013. 11:02 ] @
Jos jedan primer moze biti konekcija na bazu, upiti za ubacivanje, brisanje, menjanje podataka iz tabele.

Recimo napravio sam dll sa svim javnim poljima za konekciju:
- connect.dll,
i za upite:
- queries.dll,

i imam glavni(Main) program gde sam napravio formu sa poljima za unos, listom, dugmicima itd.
i sada samo ubacim svoje dll-ove u using(c#), include(C/C++), import(Java) ili [DllImport("connect.dll")] i tada radim u glavnom programu isto kao i sa klasama...
Pozovem Metodu iz dll-a,
KonektujSe();

Naravno da je ovo sve moglo i sa klasama da se odradi, ali sledeci put kada budem radio slican program, ja imam dll koji samo importujem i po potrebi ako treba konekcioni string da se promeni ja promenim i to je to, dosta olaksava posao. E sada osim ovoga tu je i mogucnost komunikacije sa drugim jezikom recimo(C++ i C#), to me ne pitaj jer nisam nikada povezivao vise jezika radi jednog projekta...
[ Nedeljko @ 03.01.2013. 18:04 ] @
Ne znam za C#/Java jezike, ali u C/C++ se dll-ovi definitivno ne učitavaju pomoću #include.

A da bi koristio isti kod više puta, dll nije potreban, jer to može da se odradi i statičkim linkovanjem.
[ X Files @ 03.01.2013. 19:10 ] @
30.01.2005. u 17:50 - pre 2895 dana i 2h
:) "Ala vreme leti!".

What is a DLL?
Citat:

...
A DLL is a library that contains code and data that can be used by more than one program at the same time. For example, in Windows operating systems, the Comdlg32 DLL performs common dialog box related functions. Therefore, each program can use the functionality that is contained in this DLL to implement an Open dialog box. This helps promote code reuse and efficient memory usage.

By using a DLL, a program can be modularized into separate components. For example, an accounting program may be sold by module. Each module can be loaded into the main program at run time if that module is installed. Because the modules are separate, the load time of the program is faster, and a module is only loaded when that functionality is requested.

Additionally, updates are easier to apply to each module without affecting other parts of the program. For example, you may have a payroll program, and the tax rates change each year. When these changes are isolated to a DLL, you can apply an update without needing to build or install the whole program again.

The following list describes some of the files that are implemented as DLLs in Windows operating systems:
• ActiveX Controls (.ocx) files
An example of an ActiveX control is a calendar control that lets you select a date from a calendar.
• Control Panel (.cpl) files
An example of a .cpl file is an item that is located in Control Panel. Each item is a specialized DLL.
• Device driver (.drv) files
An example of a device driver is a printer driver that controls the printing to a printer.

DLL advantages
The following list describes some of the advantages that are provided when a program uses a DLL:
• Uses fewer resources
When multiple programs use the same library of functions, a DLL can reduce the duplication of code that is loaded on the disk and in physical memory. This can greatly influence the performance of not just the program that is running in the foreground, but also other programs that are running on the Windows operating system.
• Promotes modular architecture
A DLL helps promote developing modular programs. This helps you develop large programs that require multiple language versions or a program that requires modular architecture. An example of a modular program is an accounting program that has many modules that can be dynamically loaded at run time.
• Eases deployment and installation
When a function within a DLL needs an update or a fix, the deployment and installation of the DLL does not require the program to be relinked with the DLL. Additionally, if multiple programs use the same DLL, the multiple programs will all benefit from the update or the fix. This issue may more frequently occur when you use a third-party DLL that is regularly updated or fixed.
...



[ Boyka @ 04.01.2013. 10:34 ] @
Citat:
Nedeljko:
Ne znam za C#/Java jezike, ali u C/C++ se dll-ovi definitivno ne učitavaju pomoću #include.

A da bi koristio isti kod više puta, dll nije potreban, jer to može da se odradi i statičkim linkovanjem.


U C# moze, u C++ ne moze, zeznuo sam se lol
u C++ se mogu ubaciti samo primer.h fajlovi, nisam radio sa DLL-ovima u C++, ali predpostavljam da je moguce izvrsiti [DllImport]
[ mmix @ 04.01.2013. 11:06 ] @
Ni u C#-u ne mozes da ukljucis DLL tako sto ces koristiti using, using se koristi za namespace, ne za ime DLLa (dllovi se registruju kao reference tokom bildovanja). Eventualno mozes neke pozive iz C#-a u C/C++ da obavis kroz DLLImport ako je moguce izvesti marshaling (konverziju poziva I parametara iz managed u unmanaged i obrnuto), ali u svakom slucaju to nema nikakve veze sa using.

[ Boyka @ 04.01.2013. 15:35 ] @
ne moze direktno, ali recimo ja sam ovako to radio:

Desni klik na projekat -> Add Reference -> Browse(nadjem dll)-> OK -> using namespace_dlla
i onda mogu da koristim sve public stavke u okviru namespace-a...

sto znaci da sam koristio namespace koji sam definisao unutar dll fajla... nisam se lepo izrazio :shy: