Probleme mit LoadLibrary



  • Hallo,

    folgender Code liefert mir für meine Variable dllInstance immer NULL zurück. Hat jemand eine Ahnung, woran das liegen könnte?

    void __fastcall DLL_SysInfo(void)
    {
      HINSTANCE dllInstance;
      try
      {
        if (FileExists("syscrtl.dll"))
          dllInstance = LoadLibrary("syscrtl.dll");
        try
        {
          if (!dllInstance)
            Application->MessageBox("SYSCRTL.DLL konnte nicht geladen werden.", "Fehler", MB_OK);
          else
          {
            ShowSysInfo = (int (__stdcall*)()) GetProcAddress(dllInstance, "ShowSysInfo");
            if (ShowSysInfo == NULL)
              Application->MessageBox("Fehler beim Zugriff auf DLL", "Fehler", MB_OK);
            else
            {
              ShowSysInfo();
            }
          }
        }
        catch (Exception &exception)
        {
          Application->ShowException(&exception);
        }
      }
      __finally
      {
        FreeLibrary(dllInstance);
      }
    }
    

    freedy



  • mit der folgenden funktion kannst du rausfinden warum

    // Fehlerbehandlung auf der Systemebene (z.B. LoadLidrary, GetProcAddress,...
    void __fastcall ErrorHandling(HWND hwnd, String Caption)
    {
        DWORD lErr = GetLastError();
        if (lErr != 0)
        {
            LPVOID lpMsgBuf;
            FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
                          NULL, lErr,
                          MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                          (LPTSTR) &lpMsgBuf, 0, NULL );
    
            MessageBox(hwnd, (LPCTSTR)lpMsgBuf, Caption.c_str(), MB_OK |MB_ICONERROR );
            LocalFree(lpMsgBuf);
        }
        SetLastError(0);
    }
    //---------------------------------------------------------------------------
    
    ...
    
    // deine funk
      dllInstance = LoadLibrary("syscrtl.dll");
      if (!dllInstance)
         ErrorHandling(NULL, "DLL Fehler");
    
    ...
    


  • Danke, funzt.


Anmelden zum Antworten