Jak obsługiwać pliki DLL (podpinanie do programu)
Ostatnio zmodyfikowano 2009-01-29 22:34
zori Temat założony przez niniejszego użytkownika |
Jak obsługiwać pliki DLL (podpinanie do programu) » 2009-01-01 16:46:22 Jak coś źle napisze to sorki mój PIERWSZY post na tym forum. :-)
Czy wie ktoś może jak się obsługuje biblioteki DLL. Potrafię je tworzyć ale co mi z tego jak nie potrafię z nich korzystać. Wiem ze to jest juz trudniejsze programowanie ale jakoś bardzo mnie ciekawi działanie tych Bibliotek jeśli ktoś może opisać działanie takich bibliotek będę bardzo wdzięczny.
/edit W tym kursie było napisane ze będzie rozwijany temat tych bibliotek ale jakoś go nie znalazłem. |
|
pekfos |
» 2009-01-01 16:58:06 ale byłbym nie wiem jak się je obsługuje a byłbym wdzięczny jakbyś mógł mi napisać jak się je tworzy :) |
|
DejaVu |
» 2009-01-01 18:06:56 1) Tworzysz bibliotekę *.dll 2) Tworzysz program drugi, który używa pliku nagłówkowego utworzonej biblioteki 3) Przegrywasz bibliotekę *.dll do katalogu w którym będzie Twój nowy program 4) Do linker'a programu dopisujesz bibliotekę *.dll 5) Kompilujesz program i cieszysz się z działającego programu. |
|
zori Temat założony przez niniejszego użytkownika |
» 2009-01-01 19:54:27 Jak stworzyc biblioteke DLL w programie Dev-C++ : 1) Klikasz Plik -> Nowy -> Projekt... 2) W zakładce "Basic" Wybiersz "DLL" Klikasz "OK". 3) Tworzysz bibiloteke i kompilujesz. To chyba wszystko na ten temat ------------------------------------------------------- Druga sprawa jak bys mógł jeszcze napisac jak moge wykozysztac funkcje zawarte w bibliotece kiedys znalazłem taki kozystanie z biblitek dll #include <iostream> #include <windows.h> #include <conio.h> using namespace std;
typedef void( * fun )( void );
int main( void ) { HMODULE hModule = LoadLibrary( "plik.dll" ); if( hModule == NULL ) return 0; fun hFun =( fun ) GetProcAddress( hModule, "Funkcja" ); if( hFun == NULL ) return 0; FreeLibrary( hModule ); getch(); } Działa wszystko ok ale jak funkcja z biblioteki wyamaga jakis porametry to jak je jej podać?? |
|
pekfos |
» 2009-01-01 22:37:04 a tworzyłeś dll'e które coś robią:P? ja napisałem coś takiego i mam błędy:
#ifndef _dajglos_H_ #define _dajglos_H_
#if BUILDING_DLL # define DLLIMPORT __declspec (dllexport) #else # define DLLIMPORT __declspec (dllimport) #endif
class DLLIMPORT DllClass { public: DllClass(); virtual ~DllClass( void ); private: }; void daj_glos( void );
#endif
#include "dajglos.h" #include <windows.h> #include <iostream>
DllClass::DllClass() { }
DllClass::~DllClass() { }
void daj_glos( void ) { std::cout << "daje glos" << std::endl; } BOOL APIENTRY DllMain( HINSTANCE hInst , DWORD reason , LPVOID reserved ) { switch( reason ) { case DLL_PROCESS_ATTACH: break; case DLL_PROCESS_DETACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; } return TRUE; }
#include "dajglos.h" #include <conio.h> int main() { daj_glos(); getch(); return 0; }
i u mam pytanie: jak podpiąć dll'a(co wpisać w konsolidator) i czy dobrze napisałem dll'a? |
|
programista12 |
» 2009-01-29 19:45:07 Nie jestem pewien, ale chyba wiem jak to zrobić: 1. Projekt->Opcje projektu 2. W zakładce "Parametry" w polu "Konsolidator" wpisujesz nazwa_biblioteki.dll. Jeśli wystąpią błędy, które mówią, że nie można odnaleźć biblioteki DLL, przechodzisz do zakładki "Pliki/katalogi" i tam podajesz ścieżkę do swojej biblioteki DLL. Jeśli wystąpią inne błędy, napisz ich treść, a wtedy będzie można je rozwiązać. Mam nadzieję, że pomogłem :) Pozdrawiam. |
|
manfred |
» 2009-01-29 22:34:04 Nie linkuj z dllem tylko z biblioteką importu, która powstała przy kompilacji dll (rozszerzenie .a). A tak na przyszłość - google twoim przyjacielem jest. |
|
« 1 » |