30.03.2017 Views

Excel_VBA_manual

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Na primjer jedna datoteka sa ekstenzijom .DEF izgleda ovako:<br />

LIBRARY BINSTABLO<br />

DESCRIPTION '' Kreira binarno stablo''<br />

EXPORTS<br />

Unesi @1<br />

Izbriši @2<br />

Član @3<br />

Min @4<br />

AppWizard kreira osnovnu DEF datoteku i automatski je dodaje DLL projektu. U tako kreiranu<br />

datoteku dodaju se samo imena funkcija s njihovim ordinalnim brojevima.<br />

Za razliku od AppWizarda, opcija Win32 DLL ne kreira DEF datoteku, ali se datoteka može<br />

naknadno kreirati i dodati projektu (Add To Project).<br />

Prilikom eksportiranja funkcija iz DLL-a u izvršne datoteke napisane u Visual C++, C++<br />

kompajler automatski kreira tzv. dekorativna imena funkcija koja se moraju navesti u .DEF<br />

datoteci umjesto stvarnih imena funkcija, ili se funkcije moraju eksportirati sa standardnom C<br />

vezom (naredba extern ''C'').<br />

Dekorativna imena funkcija mogu se proĉitati upotrebom naredbe DUMPIN ili korištenjem linker<br />

naredbe /MAP (naredbe se navode u izborniku Project–Settings). Aplikacija koja poziva DLL<br />

(C++ kod) mora biti kreirana sa istom verzijom Visual C++ da bi mogla proĉitati dekorativna<br />

imena.<br />

Ako extension DLL sadržava klase koje se moraju eksportirati, tada se na poĉetku i na kraju<br />

zaglavlja mora nalaziti sljedeći kod:<br />

#undef AFX_DATA<br />

#define AFX_DATA AFX_EXT_DATA<br />

// tijelo zaglavlja<br />

#undef AFX_DATA<br />

#define AFX_DATA<br />

Ove linije koda osiguravaju da su MFC varijable, koje DLL koristi interno, dodane klasama i<br />

eksportirane sa DLL-om.<br />

3.2.4 Eksportiranje funkcija iz DLL-a korištenjem ključne riječi<br />

__declspec(dllexport)<br />

Pomoću kljuĉne rijeĉi __declspec(dllexport) može se eksportirati podatke, funkcije i klase iz<br />

DLL-a. Ako se upotrebljava naredba __declspec(dllexport) tada nije potrebna .DEF datoteka.<br />

Da bi eksportirali funkcije, __declspec(dllexport) se postavlja lijevo od kljuĉne rijeĉi koja<br />

predstavlja konvenciju poziva DLL-a (__stdcall ili WINAPI), ako je kljuĉna rijeĉ navedena:<br />

41

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!