[Gelöst] Funktionsaufruf aus DLL schlägt fehl



  • Hallo,

    folgender Code meiner DLL:

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #include <windows.h>
    #pragma hdrstop
    
    // C++Builder-Kommentare
    
    #pragma argsused
    int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
    {
            return 1;
    }
    //---------------------------------------------------------------------------
    
    __declspec(dllexport) void func()
    {
      ShowMessage("hallo");
    }
    

    und meiner Host-Anwendung

    //FAQ-Quelltext
    typedef void (* DLLFUNCTION1PROC)(void);
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        HMODULE hMyLib;
        DLLFUNCTION1PROC pfnDllFunction1 = NULL;
    
        hMyLib = LoadLibrary("..\\dll\\Project1.dll");
        if (hMyLib == NULL) {
            ShowMessage("nicht gefunden");
            return;
        }
        pfnDllFunction1 = (DLLFUNCTION1PROC)GetProcAddress(hMyLib, "_func");
        if (pfnDllFunction1 == NULL) {
            ShowMessage("funktion fehlt");
            return;
        }
    
        pfnDllFunction1();
    
        FreeLibrary(hMyLib);
    
    }
    

    Warum kann GetProcAddress _func nicht finden (Meldung "funktion fehlt" kommt)?

    Danke schon mal im voraus!

    [EDIT] Gesucht habe ich schon vergeblich! Ich bin auch für Stichwörter dankbar. BTW: Wie heißt dieses Tool, mit dem man sich alle exportierten Funktionen einer DLL auflisten lassen kann?



  • Sorry, dass ich mal wieder vorschnell war. Hab das Problem selbst gefunden. Mit dem Dependency Walker von MS (über Wikipedia gefunden), habe ich herausgefunden, dass die Funktion @func$qv heißt. Setze ich ein extern "C" vor __declspec(dllexport), ist func als _func verfügbar.


Anmelden zum Antworten