Uputstvo za pravljenje i korišdenje biblioteka sa dinamičkim povezivanjem (.dll)

Similar documents
Podešavanje za eduroam ios

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings

Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije

SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan.

INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY

1. Instalacija programske podrške

Otpremanje video snimka na YouTube

UPUTSTVO. za ruter TP-LINK TD-854W/ TD-W8951NB

Upute za korištenje makronaredbi gml2dwg i gml2dgn

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri.

NIS PETROL. Uputstvo za deaktiviranje/aktiviranje stranice Veleprodajnog cenovnika na sajtu NIS Petrol-a

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA

- Vežba 1 (dodatan materijal) - Kreiranje Web šablona (template) pomoću softvera Adobe Photoshop CS

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd,

SAS On Demand. Video: Upute za registraciju:

PROJEKTNI PRORAČUN 1

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik)

Tutorijal za Štefice za upload slika na forum.

Klasterizacija. NIKOLA MILIKIĆ URL:

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT

Struktura i organizacija baza podataka

UPUTE ZA INSTALACIJU PROGRAMA FINBOLT 2007 tvrtke BOLTANO d.o.o.

Office 365, upute za korištenje elektroničke pošte

P R O J E K T N I R A D

mdita Editor - Korisničko uputstvo -

Pravljenje Screenshota. 1. Korak

MRS. MRSLab03 Metodologija Razvoja Softvera Vežba 03 LAB Dijagram aktivnosti

UNIVERZITET U BEOGRADU RUDARSKO GEOLOŠKI FAKULTET DEPARTMAN ZA HIDROGEOLOGIJU ZBORNIK RADOVA. ZLATIBOR maj godine

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB.

Windows Easy Transfer

LabVIEW-ZADACI. 1. Napisati program u LabVIEW-u koji računa zbir dva broja.

Da bi se napravio izvještaj u Accessu potrebno je na izborniku Create odabrati karticu naredbi Reports.

Primer izrade dinamičkog sajta

Port Community System

BENCHMARKING HOSTELA

KatzeView Uputstvo. verzija Novi Sad Josifa Marinkovića 44. Tel: +381 (0) Fax: +381 (0) Mob: +381 (0)

Uvod u Microsoft Project (2)

Aplikacija za podršku transferu tehnologija

MikroC biblioteka za PDU format SMS poruke

DZM Aplikacija za servise

Uputstvo za konfigurisanje uređaja Roadstar

Nejednakosti s faktorijelima

Uputstva za upotrebu štampača CITIZEN S310II

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE

Uvod u relacione baze podataka

Pokretanje izvršnog fajla

Trening: Obzor financijsko izvještavanje i osnovne ugovorne obveze

INFORMATIKA II AutoCAD 9. deo. Rudarsko-geološki fakultet Rudarski odsek

Upotreba selektora. June 04

MRS MRSLab09 Metodologija Razvoja Softvera Vežba 09

Tema 2: Uvod u sisteme za podršku odlučivanju (VEŽBE)

Bušilice nove generacije. ImpactDrill

RANI BOOKING TURSKA LJETO 2017

Struktura indeksa: B-stablo. ls/swd/btree/btree.html

DEFINISANJE TURISTIČKE TRAŽNJE

STRUČNA PRAKSA B-PRO TEMA 13

Primer-1 Nacrtati deo lanca.

Posmatrani i objekti posmatraci

''Serbia'' Serbia MATURSKI RAD. Učenik: Serbia Predmet: Informatika i Računarstvo Profesor: Serbia

Advertising on the Web

PRIMJENA PROGRAMSKOG PAKETA EPLAN U PROJEKTOVANJU I ANALIZI IZRADE DOKUMENTACIJE NISKONAPONSKIH ELEKTRIČNIH INSTALACIJA

Babylon - instalacija,aktivacija i rad sa njim

CRNA GORA

STRUKTURNO KABLIRANJE

Upute za VDSL modem Innbox F60 FTTH

Mogudnosti za prilagođavanje

ODRICANJE OD ODGOVORNOSTI Ovaj je Priručnik povjerljivo, neobjavljeno vlasništvo društva Intesa Sanpaolo Card i ovime se ne prenose prava vlasništva.

Tablični kalkulator Excel 7.0 Klinča Sela 2005.

3. Pregled sistema Unix

UPUTSTVO ZA INSTALACIJU I PODESAVANJE PROGRAMA ZA MONITORING RADA SOLARNE ELEKTRANE KOSTAL PIKO MASTER CONTROL (PMC) v.2

PLAN RADA. 1. Počnimo sa primerom! 2. Kako i zašto? 3. Pejzaž višestruke upotrebe softvera 4. Frameworks 5. Proizvodne linije softvera 6.

Poglavlje 1 POČETAK RADA SA MICROSOFT OFFICE-OM 2016

24th International FIG Congress

Halina, Hesus. (Advent) œ N œ œ œ. œ œ œ œ œ. œ. œ œ œ œ. œ œ. C F G7sus4. œ. # œ œ J œ œ œ J. œ œ. J œ. # œ. # œ œ œ

Direktan link ka kursu:

ECONOMIC EVALUATION OF TOBACCO VARIETIES OF TOBACCO TYPE PRILEP EKONOMSKO OCJENIVANJE SORTE DUHANA TIPA PRILEP

Automatske Maske za zavarivanje. Stella, black carbon. chain and skull. clown. blue carbon

2. Kreiranje nove baze podataka

INTEGRACIJA DODATNIH MOGUĆNOSTI U PROGRAMSKI SUSTAV MARKER

za STB GO4TV in alliance with GSS media

Implementacija sparsnih matrica upotrebom listi u programskom jeziku C

Univerzitet u Novom Sadu. Fakultet tehničkih nauka. Odsek za računarsku tehniku i računarske komunikacije. Uvod u GIT

WWF. Jahorina

KAKO GA TVORIMO? Tvorimo ga tako, da glagol postavimo v preteklik (past simple): 1. GLAGOL BITI - WAS / WERE TRDILNA OBLIKA:

Sadržaj. WORDPRESS OSNOVE e-book v 1.2

Unity : Osnovni koncepti i razvoj 3D igre

SKRIPTA ZA VEŽBE IZ PREDMETA ELEKTRONSKO POSLOVANJE

Mindomo online aplikacija za izradu umnih mapa

Uputstvo za korišćenje Asseco WEB 3.0 aplikacije za Fizička lica

- Vežba 2 - OPTIMIZACIJA GRAFIKE ZA WEB UPOTREBA ALATKE SLICE TOOL IZRADA WEB GALERIJE

Једно решење корисничког интерфејса за руковање листама канала и реализација електонског програмског водича за дигиталне ТВ пријемнике

STABLA ODLUČIVANJA. Jelena Jovanovic. Web:

- Vežba 5 - UVOZ SLIKA I RAD SA SLIKAMA RAD SA SEKVENCAMA I KADROVIMA OBJAVLJIVANJE FILMA

UPUTE ZA RAD S MODULOM "ČLANOVI" U SUSTAVU "VATRONET"

APLIKACIJA ZA ŠIFROVANJE FAJLOVA U C# PROGRAMSKOM JEZIKU

Help za FreePOS. Zatim iz foldera "FI550update" fajl "FI550.exe" treba prekopirati preko postojećeg koji se nalazi na putanji C:\Fi550\Programi\.

Transcription:

Uputstvo za pravljenje i korišdenje biblioteka sa dinamičkim povezivanjem (.dll) pomodu razvojnog okruženja Microsoft Visual Studio 2010 Autor: dipl.ing. Nemanja Kojić, asistent Decembar 2013.

Korak 1 Otvoriti okruženje Visual Studio 2010/2012 i izborom opcije File/New Project započeti pravljenje novog projekta, kao što je prikazano na slici 1. Slika 1 Započeto pravljenje projekta za dinamičku biblioteku. Korak 2 Odabrati opciju Next, da bi se otvorila stranica za konfigurisanje projekta, kao što je prikazano na slici 2. Slika 2 Otvara se dijalog za inicijalno podešavanje projekta dinamičke biblioteke.

Korak 3 Izabrati opcije za pravljenje dinamičke biblioteke i potvrditi unos pritiskom na dugme OK, kao što je prikazano na slici 3. Slika 3 Inicijalno podešavanje projekta dinamičke biblioteke. Korak 4 Dodati zaglavlje u projekat dinamičke biblioteke i u njemu implementirati makro definicije za izvoz simbola. Svaki javno dostupni simbol u dinamičkoj biblioteci, kojem treba pristupiti spolja, mora biti označen kao simbol koji se izvozi. To se postiže dodavanjem ključne reči declspec(dllexport) svakoj deklaraciji imena koje treba izvesti i učiniti dostupnim spolja. Data ključna reč se upotpunjuje informacijom o tome da li simbol izvozi (dllexport) ili se simbol uvozi iz neke druge dinamičke biblioteke (dllimport). Uvoz imena iz dinamičke biblioteke je posebno bitan kada se dinamička biblioteka koristi u drugom projektu. Kada se isporučuje dinamička biblioteka, isporučuju se slededi produkti: - sva zaglavlja u kojima se nalaze imena izvezena iz biblioteke (.h), - fajl dinamičke biblioteke (.dll) sa prevodom implementiranih funkcija, - adapterska statička (.lib) biblioteka koja se povezuje statički sa drugim projektom i delegira pozive funkcijama u dinamičkoj biblioteci. Kada se isporučuju zaglavlja sa simbolima koji se koriste u drugom projektu, dati simboli u tom slučaju moraju biti označeni ključnom rečju declspec(dllimport), čime se linkeru signalizira da su ved definisani u dinamičkoj biblioteci, na osnovu čega je mogude program uspešno povezati. Da bi se izbeglo dupliranje izvornog koda, promena smera uvoza/izvoza simbola se jednostavno implementira korišdenjem makro definicija, kao što je prikazano na slededoj slici 4 i 5.

Slika 4 Dodati zaglavlje sa definicijom makroa za uvoz/izvoz simbola u/iz dinamičke biblioteke. Implementacija makro definicija je prikazana na slici 5. Slika 5 Implementirane makro definicije za uvoz/izvoz simbola u/iz dinamičke biblioteke. Važna napomena: makro DLL_PROJECT_EXPORTS je specijalni makro koji generiše okruženje kada se napravi projekat dinamičke biblioteke (ime mu se sastoji od naziva projekta i sufiksa _EXPORTS). Pošto njegova definicija postoji, svaki simbol u dinamičkoj biblioteci, označen makro definicijom DLL_PROJECT_API bide simbol koji se izvozi. Sa druge strane, kada se dinamička biblioteka koristi za pisanje nekog drugog projekta, u njemu nede postojati ova definicija, tako da de se aktivirati #else grana ( declspec(dllimport)) uslovnog grananja i tada de se svi simboli u uključenim zaglavljima date dinamičke biblioteke tretirati kao simboli koji se uvoze u taj projekt, pa de ih linker tražiti u dinamičkoj biblioteci.

Korak 5 Dodati definicije sopstvenih klasa i funkcija u nova zaglavlja i označiti simbole koji se izvoze, kao što je prikazano na slici 6. Slika 6 Definicija klase koja se izvozi iz dinamičke biblioteke (označena je makroom DLL_PROJECT_API). Obratiti pažnju da se svi javno dostupni simboli u klasi, automatski izvoze, ukoliko je identifikator njihove okružujude klase označen kao simbol za izvoz. Jedini izuzetak su prijateljske (friend) funkcije, koje se ne smatraju članovima klasa, pa se moraju eksplicitno označiti makroom za izvoz. Operatorska funkcija operator<< nije deo definisane klase, pa stoga mora biti označena, kao i svaka druga globalna funkcija, makroom DLL_PROJECT_API. Korak 6 Implementirati sve metode date klase u.cpp fajlu. Slika 7 Dodati.cpp fajl i definisati metode klase.

Primetiti da su definicije potpuno standardne, bez obzira što de biti upakovane u dinamičku biblioteku, kao što je prikazano na slici 8. Slika 8 Definicije metoda klasa i globalnih funkcija u dinamičkoj biblioteci. Korak 7 Dodati definiciju DllMain funcije, koja predstavlja ulaznu tačku prilikom povezivanja programa sa dinamičkom bibliotekom u trenutku pokretanja, kao što je prikazano na slici 9. Slika 9 Implementacija funkcije DllMain. Ukoliko se ne navede definicija ove funkcije, kompajler de je generisati sa praznim telom. To je najčešde sasvim dovoljno za razvoj. Međutim, ukoliko je potrebno posebno reagovati na akcije uvezivanja dinamičke biblioteke sa glavnim programom, onda se ova funkcija mora implementirati.

Korak 8 Napraviti projekat za glavni program koji treba da koristi dinamičku biblioteku, kao što je prikazano na slici 10. Slika 10 Pravljenje projekta glavnog programa. Projekat označiti kao Win32 konzolnu aplikaciju, kao što je prikazano na slici 11. Slika 11 Podešavanja projekta glavnog programa.

Korak 9 Sada treba podesiti projekat glavnog programa i povezati ga sa projektom dinamičke biblioteke. Najpre treba označiti projekat glavnog programa kao projekat koji de se startovati prilikom pokretanja programa, kao što je prikazano na slici 12. Slika 12 Označiti projekat glavnog programa kao StartUp Project. Podesiti zavisnosti projekta glavnog programa (slika 13) Slika 13 Otvoriti dijalog za definisanje zavisnosti projekta.

... i dodati projekat dinamičke biblioteke u listu svih projekata od kojih zavisi prevođenje projekta glavnog programa, kao što je prikazano na slici 14. Slika 14 Podešavanje zavisnosti projekta glavnog programa. Zatim u skup referenci projekte glavnog programa (slika 15)... Slika 15 Otvoriti dijalog za definisanje referenci.

... dodati projekat biblioteke, što de koristit linkeru u trenutku povezivanja glavnog programa sa kodom dinamičke biblioteke (tačnije povezivanje sa adapterskom bibliotekom.lib koja se generiše i isporučuje uz.dll fajl). Nakon što se otvori dijalog Property Pages, pritisnuti dugme Add New Reference i nakon toga se otvara dijalog Add Reference, kao na slici 16. Slika 16 Dodati reference ka projektima koji su potrebni projektu glavnog programa za generisanje izvršnog fajla. Kada se pritisne dugme OK, referenca se dodaje u skup referenci, kao što je prikazano na slici 17. Slika 17 Pregled referenci projekta.

Potrebno je podesiti i putanje za uključivanje zaglavlja iz dinamičke biblioteke (slika 17), kako bi pretprocesor mogao da ih pronađe u projektu biblioteke pre nego što se započne prevođenje projekta glavnog programa. Otvoriti dijalog Property Pages (slika 18). Slika 18 Otvoriti dijalog Property Pages. U stablu Configuration Properties odabrati čvor C/C++ /General i kliknuti na polje Additional Include Directories. Otvara se dijalog Additional Include Directories i tada dodati putanju do direktorijuma biblioteke u kojem se nalaze fajlovi zaglavlja, kao što je prikazano na slici 19. Obratiti pažnju da se putanja može navesti i relativno, što se inače i preporučuje (zbog prenosivosti projekta na drugi računar). Slika 19 Dodavanje putanja do fajlova zaglavalja u projektu dinamičke biblioteke.

Kada se pritisne dugme OK, dijalog se zatvara i može se videti dodata putanja. Odabrati dugme Apply/OK i zatvoriti dijalog Property Pages. Time se završava postupak podešavanja putanja do fajlova zaglavlja, kao što je prikazano na slici 20. Slika 20 Pregled podešavanja projekta. Vide se dodate putanje do eksternih fajlova zaglavlja. Korak 10 Napisati glavni program (main) i koristiti klase i funkcije iz date dinamičke biblioteke, kao što je prikazano na slici 21. Slika 21 Primer glavnog programa koji koristi simbole iz dinamičke biblioteke.

Prevesti izvorni kod rešenja aktiviranjem opcije Build/Rebuild All. Pradenjem ispisa prilikom prevođenja izvornog koda rešenja, može se videti da se prilikom prevođenja projekta dinamičke biblioteke stvaraju i sam fajl dinamičke biblioteke (.dll), kao i istoimeni fajl statičke adapterske biblioteke (.lib), koji de statički biti uvezan u izvršni fajl glavnog programa i delegirati pozive dinamičkoj biblioteci. Slika 22 Pradenje prevođenja izvornog koda rešenja. Pokrenuti konačno glavni program i pratiti izvršavanje. Pošto je u ovom primeru implementirana funkcija DllMain, može se dodatno pratiti i ispis u trenucima njenog pozivanja, kao što je prikazano na slici 23. Slika 23 Izvršavanje prevedenog programa.