Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak obsługiwać pliki DLL (podpinanie do programu)

Ostatnio zmodyfikowano 2009-01-29 22:34
Autor Wiadomość
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.
P-3155
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 :)
P-3156
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.
P-3157
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
C/C++
#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; //sprawdzenie, czy moduł faktycznie został załadowany
   
    fun hFun =( fun ) GetProcAddress( hModule, "Funkcja" );
    if( hFun == NULL ) return 0; //tak dla pewności sprawdźmy czy nasza funkcja także została odnaleziona
   
    FreeLibrary( hModule );
    getch();
}

Działa wszystko ok ale jak funkcja z biblioteki wyamaga jakis porametry to jak je jej podać??
P-3170
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:
C/C++
//plik: dajglos.h
//projekt: dll

#ifndef _dajglos_H_
#define _dajglos_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:
   
};
void daj_glos( void );

#endif /* _DLL_H_ */


//plik: dllmain.cpp
//projekt: dll

/* Replace "dll.h" with the name of your header */
#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 /* 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;
}


//plik: main.cpp
//projekt: exe


#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?
P-3182
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.
P-4011
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.
P-18727
« 1 »
  Strona 1 z 1