![]() |
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 ? |
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 :-)
|
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] |
Re: DLL Problem auf englischem OS
Zitat:
|
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 |
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.
|
Re: DLL Problem auf englischem OS
Zitat:
|
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?
|
Re: DLL Problem auf englischem OS
die fehlermeldung lautet:
Zitat:
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 ... |
Re: DLL Problem auf englischem OS
Delphi-Quellcode:
Öhm, und in welchem Verzeichnis soll dein Programm die DLL finden?
DLLHandle := LoadLibrary(Pchar(LibraryName));
|
Re: DLL Problem auf englischem OS
mein programm und die DLL befinden sich im selben Verzeichnis
ich benutze dann nur noch die schnittstellen unit 'ScanCtrl2.pas' um die verbindung 'herzustellen' und die fkt. aufzurufen ... |
Re: DLL Problem auf englischem OS
Zitat:
|
Re: DLL Problem auf englischem OS
als ich einen absoluten pfad übergeb hab
Delphi-Quellcode:
kam der selbe fehler
dllhandle := loadlibrary(pchar('C:\ordner\Scanctrl2.dll'));
|
Re: DLL Problem auf englischem OS
Den Pfad hard codieren ist fast noch schlimmer. Mit
![]() ![]() |
Re: DLL Problem auf englischem OS
den pfad fest vorzugeben war nur zum testen ...
mit ExtractFilePath & ParamStr(0) bzw. Application.Exename hatte ich es auch probiert leider auch ohne erfolg |
Re: DLL Problem auf englischem OS
Komisch. Prüf doch mal mit
![]() ![]() |
Re: DLL Problem auf englischem OS
testen kann ich erst montag wieder - aber dann probier ich es nochmal aus ...
bis hierher vielen dank für ursachenforschung & mgl fehler meinerseits |
Re: DLL Problem auf englischem OS
bei mir ist montag morgen und ich hab zusätzlich
mit FileExists geprüft ob die DLL vorhanden ist --> sie ist es LoadLibrary funkt trotzdem nicht ... ich werd mich mal beim hersteller melden... |
Re: DLL Problem auf englischem OS
Das bedeutet mit anderen Worten: Die DLL hat statische Abhängigkeiten die nicht aufgelöst werden können. Also sie benötigt eine andere DLL oder findet einen Einsprungspunkt nicht. Dies kannst du genau heraus finden, wenn du den ErrorMode vor dem LoadLibrary() umsetzt, dann meldet dir Windows eine entsprechend detaillierte Meldung, welche DLL bzw. welcher Einsprungspunkt nicht gefunden werden konnte.
|
Re: DLL Problem auf englischem OS
Für sowas ist auch
![]() |
Re: DLL Problem auf englischem OS
hi,
neben euren antworten hatte ich nochmal gegoogelt und etwas gefunden stichwort : Microsoft Visual C++ 2005 Redistributable Package (x86) man sollte wohl dieses package und das SP1 installieren ... hab ich gemacht und siehe da - alles läuft mein problem hat sich damit erledigt danke an alle .. cya |
Re: DLL Problem auf englischem OS
Ja, mit anderen Worten: DLL nicht vorhanden bzw. DLL Einsprungspunkt nicht vorhanden. Also wie zuletzt vermutet. Damit hättest du gut heraus bekommen, welche DLL bzw. Funktion es genau war.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr. |
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