Entwickler-Ecke
Dateizugriff - DLL - Einbinden bringt Fehler
PMI - Mo 14.10.02 00:40
Titel: DLL - Einbinden bringt Fehler
Hi!
Hab mal getestet, wie das mit dem Einbinden von DLL's funktioniert. Habs zunächst mit der statischen Methode probiert.
Das Problem ist, dass wenn ich die Funktion in meinem Prog aufrufe ein Fehler gebracht wird. Der lautet:
Zitat: |
Die Datei .......\MINMAX.DLL ist fehlerhaft. Installieren Sie die Datei neu, und wiedrholen Sie den Vorgang. |
Gleichzeitig kommt noch ne weitere nette Fehlermeldung, nämlich:
Zitat: |
Vorgang kann nicht erzeugt werden. Ein an das System angeschlossene Gerät funktioniert nicht. |
Meine DLL sieht so aus:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| library MinMax;
function Min(X, Y: Integer): Integer; stdcall;
begin if X < Y then begin Min := X; end else Min := Y; end; end;
exports
Min;
begin
end. |
Die Prog Zeilen lauten:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| function Min(X, Y: Integer): Integer; external 'MinMax.dll';[/i]
procedure TForm1.Button2Click(Sender: TObject); var zahl: integer; begin zahl := Min(2,3); showmessage(inttostr(zahl)); end; |
Was hab ich denn dabei falsch gemacht?
Hoffe ihr könnt mir helfen! Danke im Vorhinein!
(14.10.02 08:54 Tino) Code-Tags hinzugefügt.
Delete - Mo 14.10.02 08:25
Luckie hat folgendes geschrieben: |
... Mathias Simmck ... |
Ich kaufe ein A ... :wink:
So, eben getestet, und das funktioniert:
Die DLL:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| library MinMax;
function Min(X, Y: Integer): Integer; stdcall; begin if X < Y then Result := X else Result := Y; end;
exports Min;
begin end. |
und der Aufruf im Programm, das im selben Verzeichnis liegt:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| function Min(X, Y: Integer): Integer; stdcall; external 'MinMax.dll';
procedure TForm1.Button1Click(Sender: TObject); var zahl : integer; begin zahl := Min(2,3); showmessage(inttostr(zahl)); end; |
Delete - Mo 14.10.02 13:25
Der Kandidat hat 99 Gummipunkte gewonnen, ab 100 gibt es eine aufblasbare Waschmaschine.
Das wäre jetzt aber die statische Methode. DLL's würde ich aber generell dynamisch einbinden, wenn nicht das Programm generell auf der DLL basiert.
PMI - Mo 14.10.02 13:36
Danke für eure echt schnelle Antwort!
Habs jetzt getestet und funktioniert leider immer noch nicht. Bringt diesselben Fehlermeldungen.
Habs auch mit der dynamischen Methode (von Matthias Simmack) probiert, scheinbar findet er meine DLL nicht!
Kann es sein, dass ich ausser der Erstellung der DLL noch andere Schritte machen muss??
Danke
Delete - Mo 14.10.02 16:34
PMI hat folgendes geschrieben: |
... Matthias Simmack ... |
Jetzt verkaufe ich ein T. :shock:
Also -
Wenn die DLL im selben Verzeichnis wie dein Programm liegt, und wenn du sicher bist, dass sie so aussieht wie du es hier gepostet hast, dann dürfte es normalerweise keine Probleme geben. Weder bei der statischen noch bei der dynamischen Methode.
Liegt die DLL aber in einem anderen Ordner, dann würde ich mal nach allen DLLs suchen, die "minmax.dll" heißen. Es wäre durchaus möglich, dass sich da eine DLL reinschummelt, die eigentlich nicht gemeint ist. Ich bin jetzt nicht 100% sicher, aber ich glaube, die Suchreihenfolge für DLLs war:
Eigener Ordner -> Windows-Ordner -> Systemordner.
PMI - Mo 14.10.02 17:11
Hi!
Jetzt funktionierts wunderbar, hatte ne 2 MinMax - DLL abgespeichert - die wurde jetzt eliminiert! :)
Danke nochmal für deine Hilfe!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!