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

Jak otwórz .dll za pomocą LoadLibrary?

Ostatnio zmodyfikowano 2009-08-23 10:11
Autor Wiadomość
GoldWolf
Temat założony przez niniejszego użytkownika
Jak otwórz .dll za pomocą LoadLibrary?
» 2009-08-18 21:16:54
A dodatkowo jak to już wykonam, jak potem powyciągaj sobie funkcje przy pomocy funkcji GetProcAddress? Ma ktoś jakiś prosty przykład takich czynności?
P-9617
skovv
» 2009-08-18 21:30:33
ja nie mam xD Heh xD Ja wczytuje (i pisze) dlle tylko do Game Makera :p
P-9618
DejaVu
» 2009-08-19 02:21:27
Dziwna nazwa tematu, dziwny opis problemu. Doprecyzuj dokładniej o co Ci chodzi bo dla mnie obecna treść nie jest na tyle jasna, żeby chciało mi się szukać rozwiązania w MSDN'ie lub googlach.
P-9619
GoldWolf
Temat założony przez niniejszego użytkownika
» 2009-08-19 06:52:36
Myślałem, że ma ktoś jakieś już doświadczenie. Sam poszukam. Mam pliki .dll z curl, chciałbym je dodać do projektu. Wiem, że za pomocą LoadLibrary można tego dokonać. Dodatkowo za pomocą funkcji GetProcAddress, można wyciągnąć funkcje które są w takich plikach. Niestety nie było dobrego przykładu.

Jeśli nikt nie próbował to odpuście sam poszukam.
P-9620
pixelmaster
» 2009-08-19 10:29:46
P-9623
DejaVu
» 2009-08-19 13:53:41
Przykład: http://msdn.microsoft.com/en-us/library/ms686944(VS.85).aspx

C/C++
#include <windows.h>
#include <stdio.h>

typedef int( __cdecl * MYPROC )( LPWSTR );

VOID main( VOID )
{
    HINSTANCE hinstLib;
    MYPROC ProcAdd;
    BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
   
    // Get a handle to the DLL module.
   
    hinstLib = LoadLibrary( TEXT( "MyPuts.dll" ) );
   
    // If the handle is valid, try to get the function address.
   
    if( hinstLib != NULL )
    {
        ProcAdd =( MYPROC ) GetProcAddress( hinstLib, "myPuts" );
       
        // If the function address is valid, call the function.
       
        if( NULL != ProcAdd )
        {
            fRunTimeLinkSuccess = TRUE;
            ( ProcAdd )( L"Message sent to the DLL function\n" );
        }
        // Free the DLL module.
       
        fFreeResult = FreeLibrary( hinstLib );
    }
   
    // If unable to call the DLL function, use an alternative.
    if( !fRunTimeLinkSuccess )
         printf( "Message printed from executable\n" );
   
}
P-9627
GoldWolf
Temat założony przez niniejszego użytkownika
» 2009-08-23 10:39:26
Sprawa nieaktualna, być może jeszcze kiedyś się tym zajmę.
P-9739
manfred
» 2009-08-23 10:11:17
A nie można wbić importów do .idata (zwyczajowa nazwa sekcji z tablicą importów), poprzez dolinkowanie pliku .lib, który powinien przyjść razem z .dll? Oszczędzisz sobie problemów, a procesorowi trochę cykli.
P-19203
« 1 »
  Strona 1 z 1