[gelöst]in wxwidget DLL's laden funktioniert nicht



  • Hi,

    hab mal noch ein Problem und zwar möchte ich mehrer DLL's laden

    das Ursprüngliche Delphi Programm sah so aus

    tmp := ExtractFilePath(ParamStr(0))
    					+ FIniFile.ReadString(FConfigSection, 'DLL', '');
    
    FDLLHandle := LoadLibrary(PChar(tmp));
    
    		if not FileExists(tmp)
    		then raise Exception.Create('Modul "' + tmp + '" existiert nicht.');
    
    		FDLLHandle := LoadLibrary(PChar(tmp));
    		if FDLLHandle = 0
    		then raise Exception.Create('Modul "' + tmp + '" konnte nicht geladen werden.');
    
    		FInit := GetProcAddress(FDLLHandle, pChar('init'));
    		if ( @FInit = Nil )
    		then raise Exception.Create('Funktion "init" im Modul nicht gefunden.');
    
    		FRun := GetProcAddress(FDLLHandle, pChar('run'));
    		if ( @FRun = Nil )
    		then raise Exception.Create('Funktion "run" im Modul nicht gefunden.');
    
    		FStop := GetProcAddress(FDLLHandle, pChar('stop'));
    		if ( @FStop = Nil )
    		then raise Exception.Create('Funktion "stop" im Modul nicht gefunden.');
    

    ich habe das jetzt so umgeschrieben

    wxDynamicLibrary dynamicLib;
    
            tmp = tmp + "\\" + bscfg->Read("/" + ConfigSection + "/DLL",tmp2);
    
            if ( !wxFileName::FileExists(tmp)){
                err = _("Modul " + tmp + " existiert nicht");
            }
    
            FDLLOpen = dynamicLib.Load(tmp , wxDL_VERBATIM);
            if (FDLLOpen == true){
                WriteMemoStr("Wurde geladen" + tmp);}
            else {
                WriteMemoStr("Wurde nicht geladen" + tmp);}
    
            FDLLHandle = dynamicLib.GetLibHandle();
            if ( FDLLHandle == NULL){
                err = _("Modul " + tmp + " konnte nicht geladen werden");
            }
    
            FInit = ( TBioStreamFunction )dynamicLib.GetSymbol("init");
            if ( & FInit == NULL){
                err = _("Funktion *init* im Modul nicht gefunden");
            }
    
            FRun = ( TBioStreamFunction )dynamicLib.GetSymbol("run");
            if ( & FRun == NULL){
                err = _("Funktion *run* im Modul nicht gefunden");
            }
    
            FStop = ( TBioStreamFunction )dynamicLib.GetSymbol("stop");
            if ( & FStop == NULL){
                err = _("Funktion *stop* im Modul nicht gefunden");
            }
    

    das funktioniert leider nicht, wenn ich alle laden will kommt m_handle == 0.
    ich weiß nicht mehr weiter.

    ich hoffe mir kann jemand helfen


  • Mod



  • Wie Welche Typen?

    Mit dem FDLLHandel vergleich ich doch dann bloß noch ob eine dll geladen oder benutzt wird etc.



  • Problem gelöst

    hatte nur ein Objekt das beim wiederholen überschrieben wurde und deshalb den Fehler brachte, dass es schon vorhanden sei.

    abhilfe schafft jedesmal ein neues(new) Objekt zu erstellen 😉


Anmelden zum Antworten