DLL vorhanden ?

Antworten
Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

DLL vorhanden ?

Beitrag von Mathias »

Kann ich das irgendwie abfangen, wen eine DLL nicht vorhanden ist ?

Wen ich jetzt mein Programm starte, kommt gnadenlos dieser Fehler:

Code: Alles auswählen

Die Anwendung konnte nicht gestartet werden, weil blabla.dll nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben. 


Code: Alles auswählen

  function Test(l:Integer): Integer; stdcall; external 'blabla.dll';
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Test(123);
end


Ich würde den Zustand gerne in einer Variable speichern und zu Laufzeit die Aufrufe der DLL unterbinden.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Thomas B.
Beiträge: 90
Registriert: Fr 2. Nov 2007, 13:32
OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Ulm

Re: DLL vorhanden ?

Beitrag von Thomas B. »

nicht statisch die DLL beim Programmstart laden lassen, sondern das im Programmablauf selbst erledigen, siehe z.B.
https://de.wikibooks.org/wiki/Programmierkurs:_Delphi:_DLL-Programmierung#Dynamisches_Einbinden
http://www.lazarusforum.de/viewtopic.php?f=55&t=3292

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: DLL vorhanden ?

Beitrag von Mathias »

Danke, so klappt es. :D

Ich habe eine fremde *.inc, bei der alle Funktionen der DLL statisch geladen werden.
Da ich aber zum Glück nur 6 Funktionen davon brauche, habe ich diese rauskopiert und abgeändert.
Ein paar Konstanten hatte es auch noch, aber da hilft Ctrl-C, Ctrl-V. :wink:

Das muss ich mir merken, falls ich selbst mal selbst was von einer Librray brauche, immer dynamisch einbinden, :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: DLL vorhanden ?

Beitrag von Warf »

Du solltest wenn möglich versuchen die DLL's immer mit der Anwendung mitzuliefern, denn sonst kann es vorkommen, das die dll auf dem zielrechner die falsche version hat und sich z.b. Die funktionssignatur geändert hat, und dann funktioniert bei dir auch nichts mehr.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: DLL vorhanden ?

Beitrag von Mathias »

Eigentlich bin ich überhaupt kein Freund von DLLs, aber für eine Messkarte musste ich notgedrungen auf eine DLL zugreifen, welcher der Hersteller zur Verfügung stellt.
Es ist natürlich mühsam, wen man auf Hersteller-Treiber angewiesen ist.
Da ist ein Arduino viel sympatischer, da muss man eine Zugriff auf ein COM-Port haben und somit ist man unabhängig, auch Betriebssystem-Seitig.
Vorausgesetzt, man weis die Befehle, die man übergeben muss. :wink:

Wen ich selbst ein grosses Project entwickeln würde, dann würde ich natürlich die Bibliotheken mitliefern.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten