Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.016 Beiträge
 
Delphi 12 Athens
 
#5

AW: DLL bei 64Bit-System wird nicht geladen

  Alt 25. Mär 2014, 15:44
Was macht eigentlich das PAnsiChar da in dem Code?
String => PChar
AnsiString => PAnsiChar

Muß die DLL "zwingend" us dem Programmverzeichnis geladen werden?
Wenn nein, dann kann der Pfad weggelassen werden. LoadLibrary sucht sich die DLL schon von allein. Angefangen beim Programmpfad, bis zu den System-Verzeichnissen.

Delphi-Quellcode:
function LoadIK220DLL(DLLName: String): Bool32;
var
  err: Boolean; // wird das noch verwendet? (aber es fehlt ja eh der halbe Code)
begin
  try
    if FileExists(DLLName) then
    begin
      ShowMessage('Mich gibt es: ' + DLLName);
      DLLHandle := LoadLibrary(PChar(DLLName));
      if DLLHandle = 0 then
        RaiseLastOSError; // alt = RaiseLastWin32Error;
    end else
    begin
      //ShowMessage('Datei IK220DLL64.dll gibt es nicht!'); // Und wenn via DLLName ein anderer Dateiname übergeben wurde?
      ShowMessage('Datei ' + DLLName + ' gibt es nicht!');
      DLLHandle := 0;
      Exit; // Schau mal bitte in die Compilermeldung und beheben die aufgezählten Fehlermeldungen (vorallem bezüglich Result sei nicht initialisiert)
    end;
  ...
  • Und, wie bereits genannt, erstellt Delphi 7 ausschließlich Win32-Programme.
  • Win32-Programme können nur Win32-DLLs laden.
  • Aber ein Win32-Programm kann auch in einem Win64 ausgeführt werden. (dort genauer im WoW64 "Windows-on-Windows", welches das 32-Bit-Subsystem vom 64-Bit-Windows ist)
  • Wenn unbedingt eine 64-Bit-DLL nötig ist, z.B. weil die 32-Bit-DLL im Windows 64 den Treiber nicht ansprechen kann,
    dann muß dafür auch ein Win64-Programm erstellt werden. (neues Delphi mit Win64-Unterstützung oder Alternativen ala Lazarus)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (25. Mär 2014 um 15:51 Uhr)
  Mit Zitat antworten Zitat