Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DLL Problem auf englischem OS (https://www.delphipraxis.net/109445-dll-problem-auf-englischem-os.html)

soulies 1. Mär 2008 15:44


DLL Problem auf englischem OS
 
hoi,

für folgendes Problem benötige ich eine Hilfestellung ...


ich hab ein programm entworfen das mit hilfe einer schnittstellen-unit
bestimmte funktionen einer DLL aufruft.
delphi 7 ent, win xp ger
funktioniert alles ohne probleme ...


starte ich nun aber das programm auf einem us notebook mit win xp eng dann
bekomme ich eine Fehlermeldung mit einer Zugriffsverletzung

die DLL wird über LoadLibrary(..) geladen

ich vermute das die DLL nicht geladen wird - ich eine funktionen der dll aufrufe -
und denn die Zugriffsverletzung als Fehler kommt ...

ich weiß nicht weiter - ihr ?

SirThornberry 1. Mär 2008 15:47

Re: DLL Problem auf englischem OS
 
Wenn du eine Zugriffsverletzung bekommst deutet das darauf hinn das du nicht prüfst ob die DLL geladen werden konnte und auch nicht prüfst ob die Funktion in der DLL gefunden wurde. Baue da am besten eine Prüfung ein und gebe aussagekräftige Fehlermeldungen ein :-)

soulies 1. Mär 2008 16:49

Re: DLL Problem auf englischem OS
 
habe nun herausgefunden das das DLLhandle (dllhandle := loadlibrary(pchar(...)))

auf dem eng-OS immer 0 ist

bisher wurde auf (dllhandle >= 32) geprüft - kann/sollte ich es ändern auf (dllhandle=0)


[info]
die dll und die schnittstellen unit kommen von einer fremdfirma
[/info]

DeddyH 1. Mär 2008 17:18

Re: DLL Problem auf englischem OS
 
Zitat:

Zitat von Win32 SDK zu LoadLibrary
If the function succeeds, the return value is a handle to the module.
If the function fails, the return value is NULL. To get extended error information, call GetLastError.

Wieso 32? Hast Du das mit ShellExecute verwechselt?

soulies 1. Mär 2008 18:10

Re: DLL Problem auf englischem OS
 
wie gesagt kommt die dll und die unit nicht von mir ...

dllhandle >=32 war quasi drin - habe ich nun geändert auf dllhandle <> 0

mit getlasterror bekomm ich auch ne vernünftige meldung - das ist ok


aber ich versteh im prinzip nicht warum alles ok ist bei einem ger-PC mit ger-OS

und bei einem eng-PC und eng-OS nicht mehr

--> die dateien & pfade sind alle identisch ...


aber erstmal danke an euch für jeden hinweis bis hierher

SirThornberry 1. Mär 2008 18:19

Re: DLL Problem auf englischem OS
 
aber wenn dir dort 0 zurück gegeben wird scheint es die DLL nicht zu geben oder sie ist nicht registriert. Vielleicht ist auf dem englischen System ein bestimmtes Update nicht installiert oder dergleichen.

Luckie 1. Mär 2008 20:54

Re: DLL Problem auf englischem OS
 
Zitat:

Zitat von soulies
mit getlasterror bekomm ich auch ne vernünftige meldung - das ist ok

Zeig uns mal deinen Code, wo der Fehler und was für ein Fehler (GetLastError) kommt.

Bernhard Geyer 1. Mär 2008 21:20

Re: DLL Problem auf englischem OS
 
Evtl. hat ja auch der Hersteller der DLL/Schnittstellen-Unit mist gemacht und setzt z.B. C:\Programme als Installationspfad von Programmen vorraus und entläd die DLL sofort wieder wenns nicht passt. Was sagt denn der Hersteller der DLL dazu?

soulies 2. Mär 2008 00:06

Re: DLL Problem auf englischem OS
 
die fehlermeldung lautet:
Zitat:

This application failed to start because ScanCtrl2.dll was not found. Re-installing the application may fix the problem.
der aufruf sieht wie folgt aus:

Delphi-Quellcode:
  unit ScanCtrl2;

  ...

  const
   LibraryName = 'ScanCtrl2.dll';

  ...

  DLLHandle: THandle;

  ...

  procedure LoadDLL;
  begin
    try
      DLLHandle := LoadLibrary(Pchar(LibraryName));

      if (DLLHandle <> 0) then
       begin
        ...
       end
      // Error: ScanCtrl2.dll kann nicht geladen werden !!
      else
       begin
        messagedlg(SysErrorMessage(getlasterror),mterror,[mbok],0); // hier kommt da fehler da dllhandle=0
        ...
      end;
    except
      on E:Exception do
      messagedlg(E.Message,mterror,[mbok],0);
    end;
  end;

begin
  LoadDLL;
end.

den hersteller habe ich NOCH nicht kontaktiert ...

Luckie 2. Mär 2008 00:21

Re: DLL Problem auf englischem OS
 
Delphi-Quellcode:
DLLHandle := LoadLibrary(Pchar(LibraryName));
Öhm, und in welchem Verzeichnis soll dein Programm die DLL finden?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:57 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz