Forum » Programiranje » [C++] kako narediti dll
[C++] kako narediti dll
prog_1337 ::
Lep pozdrav !
Prosil bi samo za en primer dll-ja, da se ven naučim kako to deluje. Če mi lahko kdo pove tole step by step.
Torej... v dev c++ izberem zgoraj new project > dll.. mi naredi dva fajla in noter že nekaj napiše. Zdaj pa me zanima kako naj tukaj noter vstavim podprogram, da bom ga lahko z glavnim programom klical. Pa kako naj iz glavnega programa kličem.
Samo en osnovni primer npr. funkcije:
Tole je koda, ki mi jo napiše ko naredim dll project:
dllmain.cpp
dll.h
Hvala.
Prosil bi samo za en primer dll-ja, da se ven naučim kako to deluje. Če mi lahko kdo pove tole step by step.
Torej... v dev c++ izberem zgoraj new project > dll.. mi naredi dva fajla in noter že nekaj napiše. Zdaj pa me zanima kako naj tukaj noter vstavim podprogram, da bom ga lahko z glavnim programom klical. Pa kako naj iz glavnega programa kličem.
Samo en osnovni primer npr. funkcije:
void test() { cout <<"huhu"; }
Tole je koda, ki mi jo napiše ko naredim dll project:
dllmain.cpp
/* Replace "dll.h" with the name of your header */ #include "dll.h" #include <windows.h> DllClass::DllClass() { } DllClass::~DllClass () { } BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ , DWORD reason /* Reason this function is being called. */ , LPVOID reserved /* Not used. */ ) { switch (reason) { case DLL_PROCESS_ATTACH: break; case DLL_PROCESS_DETACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; } /* Returns TRUE on success, FALSE on failure */ return TRUE; }
dll.h
#ifndef _DLL_H_ #define _DLL_H_ #if BUILDING_DLL # define DLLIMPORT __declspec (dllexport) #else /* Not BUILDING_DLL */ # define DLLIMPORT __declspec (dllimport) #endif /* Not BUILDING_DLL */ class DLLIMPORT DllClass { public: DllClass(); virtual ~DllClass(void); private: }; #endif /* _DLL_H_ */
Hvala.
Tutankhamun ::
Sej za en primer ti je že okolje dev c++ naredu. To je objekt DllClass. Ti ga lahk komot radiraš. Pa namest tega vpišeš recimo tvojo funkcijo. Pa ne pozabt pred funkcijo vpisat DLLIMPORT tko kot pr DllClass. Pa še kšn extern "C" tudi nebi škodoval :).
Kar se pa DllMain tiče, se pa ne obremenjevat. Zdej že neki časa nism delu z dllji v Winsih, zadne cajte samo v linuxu. Mislm pa da lahko to tudi zbrišeš pa se še zmer prevede. Probi nism pa prepričan.
Sej dll drgač ni prov nč komplicirana zadeva. Pač notr maš ene funkcije, ki jih lahko potem kličejo različni procesi.
Drgač pa sm najdu eno stran, ki ti bo v velko pomoč. Lih neki tazga kar ti rabš.
Kar se pa DllMain tiče, se pa ne obremenjevat. Zdej že neki časa nism delu z dllji v Winsih, zadne cajte samo v linuxu. Mislm pa da lahko to tudi zbrišeš pa se še zmer prevede. Probi nism pa prepričan.
Sej dll drgač ni prov nč komplicirana zadeva. Pač notr maš ene funkcije, ki jih lahko potem kličejo različni procesi.
Drgač pa sm najdu eno stran, ki ti bo v velko pomoč. Lih neki tazga kar ti rabš.
AMD Phenom QUAD 9950 Black Edition, 8GB
Mavrik ::
DllMain je samo handler za določene evente, ki jih tam vidiš naštete. Torej če moraš kaj porihtat, ko se DLL naloži/odstrani s procesa/threada potem tisto uporabiš, drugače ga ne rabiš.
Pomemben je samo tisti DLLIMPORT, ki pomeni to, da se naj tista funkcija iz DLLja exporta in postane dosegljiva zunaj DLLja. Potem pa je potrebno še samo dodati ustrezno stikalo prevajalniku, kar sklepam da Dev-C++ nared sam.
Pomemben je samo tisti DLLIMPORT, ki pomeni to, da se naj tista funkcija iz DLLja exporta in postane dosegljiva zunaj DLLja. Potem pa je potrebno še samo dodati ustrezno stikalo prevajalniku, kar sklepam da Dev-C++ nared sam.
The truth is rarely pure and never simple.
prog_1337 ::
Zdaj sem po tistem linku spravil stvari skupaj da mi skompajla in deluje. Ampak mi deluje samo tista druga metoda Using the DLL (Without an Import Library) ... jaz pa bi rad uporabljal prvo metodo ki se mi zdi dosti lažja. Pa sem vse storil tako kot piše...dll fajle sem dal v isto datoteko...includal dll.h.
Zanima me zakaj mi napiše napako v iostream.h pa funkcije mi zgleda niti ne najde:
[Linker error] undefined reference to `test'
Zanima me zakaj mi napiše napako v iostream.h pa funkcije mi zgleda niti ne najde:
[Linker error] undefined reference to `test'
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Python, prosim za pomoc pri programiranju (strani: 1 2 3 )Oddelek: Programiranje | 14165 (10267) | lenika |
» | potrebujem pomoc pri programiranju z motorolo mc6803 mikrocipomOddelek: Programiranje | 1566 (1375) | iggy |
» | Programiranje v zbirniku - potrebujem pomočOddelek: Programiranje | 1724 (1661) | St@jler |
» | Win32 API in statične knjižniceOddelek: Programiranje | 1256 (1163) | CCfly |
» | C in DllOddelek: Programiranje | 1147 (1054) | Senitel |