AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi External exception C000001E beim Aufruf einer DLL-Funktion!

External exception C000001E beim Aufruf einer DLL-Funktion!

Ein Thema von Hedge · begonnen am 21. Aug 2008 · letzter Beitrag vom 21. Aug 2008
Antwort Antwort
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#1

External exception C000001E beim Aufruf einer DLL-Funktion!

  Alt 21. Aug 2008, 19:29
Habe eine Funktion einer DLL statisch geladen:

Delphi-Quellcode:
...
var
  Form1: TForm1;
  function SetLCDLight(value: integer): bool;
  external 'lglight.dll';

implementation
...
Die Definition des Author sieht so aus:

Zitat:
Here is the API dll, usable by all programmin languages, which has following functions:

BOOL SetLCDLight(IN INT value);
--- value: 0=off 1=half 2=full
Wenn ich jetzt zB in nem Button SetLCDLight(2); verwende kommt nach Drücken des Buttons folgende Fehlermeldung:
"Externe Exception C000001E"

Wo liegt mein Fehler?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: External exception C000001E beim Aufruf einer DLL-Funkti

  Alt 21. Aug 2008, 19:38
Versuch es mal mit cdecl; oder stdcall;
Markus Kinzler
  Mit Zitat antworten Zitat
Hedge

Registriert seit: 30. Jun 2007
278 Beiträge
 
Delphi 2009 Professional
 
#3

Re: External exception C000001E beim Aufruf einer DLL-Funkti

  Alt 21. Aug 2008, 20:20
Super, funktioniert!

Was bringt das stdcall; eigentlich?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: External exception C000001E beim Aufruf einer DLL-Funkti

  Alt 21. Aug 2008, 20:23
Wikipedia liefert hier einiges, aber auch die Onlinehilfe von Delphi müsste eine Erklärung haben.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: External exception C000001E beim Aufruf einer DLL-Funkti

  Alt 21. Aug 2008, 20:25
Es legt die sogenannte Aufrufkonvention fest. Die Aufrufkonvention sagt u.A., wie die Funktion ihre Parameter erwartet - auf dem Stack oder in Registern - und in welcher Reihenfolge. Die DLL-Funktion hat offensichtlich die Aufrufkonvention stdcall, erwartet ihren Parameter also auf dem Stack. Du hast jedoch keine Aufrufkonvention angegeben, dadurch hat Delphi angenommen, dass es sich um die Delphi-eigene Konvention Register handelt. Das bedeutet, dass die ersten drei Parameter in Registern übergeben werden. Du hast der Funktion ihren Parameter also in einem Register gegeben, die Funktion hat aber auf dem Stack nachgeschaut. Dass das nicht klappen kann, sollte klar sein.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz