Excel_VBA_manual
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Na sliĉan naĉin, za funkcije DLL-a napisane u programskom jeziku C, kojima se pristupa iz C ili<br />
C++ programskog modula, koristi se __cplusplus preprocesorski makro na naĉin da se prvo<br />
odredi koji se programski jezik kompajlira i tada se koristi C vezu ako se funkcije pozivaju iz<br />
C++ modula:<br />
#ifdef __cdplusplus<br />
extern "C"<br />
{ //samo za eksportiranje C sučelja<br />
//ako ga koristi C++ kod<br />
__declspec(dllimport) void MojaFunkcija();<br />
__declspec (dllimport) void DrugaFunkcija();<br />
#ifdef __cplusplus<br />
}<br />
#endif<br />
3.2.7 Inicijalizacija DLL-a<br />
DLL sadržava inicijalizacijski kod koji se izvršava prilikom pozivanja DLL-a iz nekog izvršnog<br />
programa ili iz drugog DLL-a. Mjesto u kodu gdje se dodaje inicijalizacijski kod ovisi o vrsti<br />
DLL-a. U Win32 DLL ulazna toĉka funkcije je najĉešće DllMain koja služi i za inicijalizaciju i za<br />
terminaciju DLL-a.<br />
Prilikom kreiranja DLL-a AppWizard ili Win32 DLL u nekim sluĉajevima (ovisno o odabranim<br />
opcijama) napišu sav potreban kod za inicijalizaciju i terminaciju DLL-a.<br />
Ako kod nije naveden, treba se dodati, jer mada će se DLL uspješno kreirati, neće se moći<br />
ispravno pozvati iz druge aplikacije.<br />
Vrste DLL-a<br />
Regular DLL<br />
Extension DLL<br />
Non – MFC DLL<br />
Mjesto dodavanja koda za<br />
inicijalizaciju i terminaciju DLL-a<br />
U CwinApp objektu upotrebom<br />
InitInstance i ExitInstance<br />
U DllMain funkciji koju generira<br />
AppWizard<br />
U funkciji DllMain koji smo sami<br />
kreirali<br />
Tablica 3.2.1 Mjesto dodavanja koda za inicijalizaciju i terminaciju DLL-a<br />
Primjer inicijalizacije i terminacije DLL-a koja se obavlja u funkciji DllMain:<br />
extern "C" int APIENTRY<br />
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)<br />
{<br />
43