[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
-
Welche Typen haben jeweils die FDLLHandle etc?
Und evtl. helfen dir diese Threads weiter:
http://c-plusplus.net/forum/viewtopic-var-t-is-230663.html
http://c-plusplus.net/forum/viewtopic-var-t-is-239744.html
http://github.com/guenni81/wxpluginexample/tree/master
-
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