[gelöst]Probleme beim dynamischen Laden einer DLL

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
kirchfritz
Beiträge: 169
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win10 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

[gelöst]Probleme beim dynamischen Laden einer DLL

Beitrag von kirchfritz »

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
Dateianhänge
project1.zip
(1.79 MiB) 116-mal heruntergeladen
Zuletzt geändert von kirchfritz am Di 4. Jun 2019, 21:26, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Probleme beim dynamischen Laden einer DLL

Beitrag von theo »

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.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Probleme beim dynamischen Laden einer DLL

Beitrag von Socke »

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

kirchfritz
Beiträge: 169
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win10 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Probleme beim dynamischen Laden einer DLL

Beitrag von kirchfritz »

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.

Antworten