DLL dynamisch laden



  • Wie kann die Anzahl an dll dateien dynamisch in ein Programm laden?

    wie ich eine bestimmte anzahl an dlls laden kann weiss ich.
    aber da muss ich auch wissen welche funktion in welche dll ist.

    kennt ihr MirandaIM? da ist das so das sobald man eine dll in den pluginordner kopiert, sie erkannt wird und ihre funktionen benutzt werden.

    aber wie geht sowas? vom prinzip her... weiss das jemand?

    Also ich will :

    Ein programm... soll x dlls laden und deren funktionen benuten.

    Problem ist das das programm nicht genau weiss wieviele dlls geladen werden müssen und welche funktionen sie enthalten.

    naja wie bei MirandaIM ...

    lol also wenn ihr das nicht so verstanden habt versuch ich es später nochmal... ausführlich 😉

    thx



  • http://www.c-plusplus.net/forum/viewtopic-var-t-is-110527-and-highlight-is-.html

    der obere link ist ein beispiel (zwar in delphi aber lässt sich ja machen)

    und der untere ist die spezifikation wo alles drin steht zu exe und dll und wie du an exportierte funktionen kommst!



  • danke werde ich mal testen



  • #include <windows.h>
    
    HMODULE dll;
    LPVOID  func;
    
    SetDllDirectory("IrgendEinSuchverzeichnis;NochEinSuchverzeichnis");
    dll=LoadLibrary("IrgendEine.dll");
    func=GetProcAddress(dll,"IrgendEineFunc");
    FreeLibrary(dll);
    

    The SetDllDirectory function affects all subsequent calls to the LoadLibrary and LoadLibraryEx functions. After calling SetDllDirectory, the DLL search path is:

    The directory from which the application loaded.
    The directory specified by the lpPathName parameter.
    The system directory. Use the GetSystemDirectory function to get the path of this directory. The name of this directory is System32.
    The 16-bit system directory. There is no function that obtains the path of this directory, but it is searched. The name of this directory is System.
    The Windows directory. Use the GetWindowsDirectory function to get the path of this directory.
    The directories that are listed in the PATH environment variable.

    To revert to the default search path used by LoadLibrary and LoadLibraryEx, call SetDllDirectory with NULL.

    EDIT
    der aufruf von SetDllDirectory() ist nicht unbedingt nötig.



  • 😃 erst lesen 👍

    wie ich eine bestimmte anzahl an dlls laden kann weiss ich.
    aber da muss ich auch wissen welche funktion in welche dll ist.

    hmmm

    Also ich will :

    Ein programm... soll x dlls laden und deren funktionen benuten.

    Problem ist das das programm nicht genau weiss wieviele dlls geladen werden müssen und welche funktionen sie enthalten.

    also will er wisse wie er an die liste exportierter funktionen kommt die eine oder mehrere dll`s enthalten. 😉



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • MrFrage schrieb:

    Problem ist das das programm nicht genau weiss wieviele dlls geladen werden müssen

    Du könntest mit FindFirstFile & Co. (siehe FAQ) das Verzeichnis nach DLLs durchforsten.

    MrFrage schrieb:

    ... und welche funktionen sie enthalten.

    Das könnte über ImageDirectoryEntryToData - zumindest macht Jeffrey Richter damit so etwas in der Art Importabschnitt einer DLL auf vorhandensein best. Funktionen testen) Die Parameter musst du aber afaik selber wissen - also du bekommst glaub' nur die Namen.


Anmelden zum Antworten