[ itf @ 04.07.2005. 12:22 ] @
| Evo mene opet sa DLL-om...
Kako napraviti DLL u Borland C++ Builderu koji sadrzi nekakav prozor (TForm) nije uopce problem:
Code: extern "C" void __declspec(dllexport) __stdcall f(){
TDLLProzor* novi = new TDLLProzor(NULL)
novi->ShowModal();
delete novi;
}
Ovom eksportabilnom funkcijom koja se nalazi u DLL-u ce se dinamicki alocirati taj prozor koji ce se pojaviti u vasoj aplikaciji. Medjutim, ovaj isti postupak ne radi kada kreiram DLL unutar Visual C++a. Uvijek mi izbaci neku gresku u svezi memorije...
Kako napraviti da unutar MFC DLL-a mogu nekom eksportabilnom funkcijom prikazati prozor koji se u njemu nalazi? Hvala
[Ovu poruku je menjao itf dana 04.07.2005. u 13:24 GMT+1] |
[ milanche @ 04.07.2005. 21:28 ] @
Evo ti kratkog opisa procedure (imali smo pre par godina slicnu temu)
1) Prilikom kreiranja DLL-a moras da odaberes opciju MFC Extension DLL
2) Window klasa koju eksportujes mora da ima u definiciji makro AFX_EXT_CLASS,
na primer:
class AFX_EXT_CLASS CNekiProzor: public CDialog
3) Postoji problem sa resource ID-ima DLL-a i aplikacije koja koristi taj DLL - ako dodje
do poklapanja, tj. DLL sadrzi resource ID iste numericke vrednosti kao i aplikacija,
crash je neminovan. Resenje - svaki dizajner aplikacije mora da zna koje numericke
vrednosti tvoj DLL koristi, sto nije tesko saznati.
4) Release verzija aplikacije zahteva release verziju DLL-a, inace vrlo cesto (da ne
kazem 'uvek') puca.
Mnogo bolje resenje, koje zaobilazi sve ove sitne zezalice je da napravis ActiveX
kontrolu, koja ima i ugradjenu (dosta rudimentarno, ali ipak dovoljno) zastitu protiv
neovlascenog koriscenja. Zapravo, mozes da specificiras da li tvoja kontrola moze da
se koristi u tudjoj aplikaciji ili samo u tvojoj.
[ itf @ 05.07.2005. 10:37 ] @
Hvala. Ovo radi, no cemu onda ovaj MFC DLL ako ga ne mogu iskoristiti? Preko njega nije moguce napraviti istu stvar?
[Ovu poruku je menjao itf dana 05.07.2005. u 11:38 GMT+1]
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.