[gelöst]Probleme beim dynamischen Laden einer DLL

Für Fragen von Einsteigern und Programmieranfängern...

[gelöst]Probleme beim dynamischen Laden einer DLL

Beitragvon kirchfritz » 31. Mai 2019, 10:36 [gelöst]Probleme beim dynamischen Laden einer DLL

Hallo,

ich möchte in einem Konsolenprogramm eine DLL mit LoadLibrary() dynamisch laden, erhalte aber immer nur den Handle=0.
Code: Alles auswählen
 
program project1;
 
{$mode objfpc}{$H+}
 
uses
  windows, Classes,sysutils;
 
Const
  LibName = 'LibRfc32.dll';
var
  LibHandle : THandle;
begin
  if FileExists(LibName) then
  begin
    // Ermittelt den Handle der zuverwendenden Library
    LibHandle := Windows.LoadLibrary(PChar(LibName));
 
    // Prüft, ob das Laden der DLL erfolgreich war
    if LibHandle <> 0 then
      Writeln(Format('Laden der DLL war erfolgreich! LibHandle=%d',[LibHandle]))
    else
      Writeln(Format('Laden der DLL gescheitert! LibHandle=%d',[LibHandle]));
 
    // Freigabe des Arbeitsspeichers
    Windows.FreeLibrary(LibHandle);
  end
  else
    Writeln(Format('DLL %s im Dateisystem nicht gefunden',[LibName]));
  Readln;
 
end.
 


Projektdatei und DLL habe ich beigelegt.
Irgendwie glaube ich, es liegt an der DLL selbst. Andere DLLs funktionieren tadellos.
Kann mir jemand sagen, was hier falsch läuft?
Kann jemand mein Problem nachvollziehen?

Viele Grüße
Fritz
Aktuelle Entwicklungsumgebung: WIN10 64Bit, Lazarus 2.0.0, FPC 3.0.4
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von kirchfritz am 4. Jun 2019, 21:26, insgesamt 1-mal geändert.
kirchfritz
 
Beiträge: 55
Registriert: 3. Jan 2011, 14:34
OS, Lazarus, FPC: Win10 (L 1.7 FPC 3.1.1) | 
CPU-Target: 32Bit
Nach oben

Beitragvon theo » 31. Mai 2019, 19:01 Re: Probleme beim dynamischen Laden einer DLL

Ohne deinen Code genauer angeschaut zu haben, tippe ich mal dass "LibRfc32.dll" aufgrund des "32" eine 32-bit DLL ist und du ein 64 bit Lazarus hast.
theo
 
Beiträge: 8173
Registriert: 11. Sep 2006, 19:01

Beitragvon Socke » 31. Mai 2019, 19:04 Re: Probleme beim dynamischen Laden einer DLL

Hallo Fritz,

ich empfehl dir das SAP RFC SDK direkt aus dem Support Portal herunterzuladen. In deinen Programmen solltest du soweit möglich auf UnicodeString setzen; falls das angesprochene SAP-System noch kein Unicode versteht, übersetzt die librfc automatisch in die entsprechende Codepage.

Grüße
Socke
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
Lazarusforum e. V.
 
Beiträge: 2623
Registriert: 22. Jul 2008, 19:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon kirchfritz » 4. Jun 2019, 21:24 Re: Probleme beim dynamischen Laden einer DLL

Theo hatte recht. Mein 64-Bit Lazarus hat die 32-Bit-DLL nicht richtig verarbeitet. Es wurde zwar anstandslos kompiliert, doch beim Programmstart kams dann zum Programmabsturz. Mein 32-Bit Lazarus hat aber alle Probleme gelöst. Vielen Dank nochmal für Eure Hilfe.

@socke: Vielen Dank für Deinen Sourcecode.
kirchfritz
 
Beiträge: 55
Registriert: 3. Jan 2011, 14:34
OS, Lazarus, FPC: Win10 (L 1.7 FPC 3.1.1) | 
CPU-Target: 32Bit
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried