![]() |
DLL in Delphi ansprechen - Zugriff auf Variabeln
Hallihallo,
ich habe eine Frage zum Zugriff auf eine Funktion in einer DLL. Die DLL ist in C geschrieben und liefert folgende Funktion:
Code:
In dieser Funktion geht es mir primär um die zwei unsigned long. Das sind doch Pointer oder?
WandExport MagickBooleanType MagickGetSize(const MagickWand *wand,
unsigned long *columns,unsigned long *rows) { *columns=5; *rows=6; return(MagickTrue); } In Delphi habe ich momentan folgenden Import:
Delphi-Quellcode:
Was mache ich falsch? Die Index-nummer habe ich via Disassembler verifiziert, die stimmt.. Leider habe ich von C nicht viel Ahnung.
function MagickGetSize(wand: PMagickWand; cols, rows : PCardinal): MagickBooleanType; cdecl; external 'blub.dll' index 311;
// Der Zugriff auf die Werte in der Funktion erfolgt dann wie folgt: procedure BlaBlub(); var ori_width, ori_height: Cardinal; begin // Wand ist vom Typ PMagickWand und ist initalisiert etc pp.. da kann der Fehler nicht liegen if (MagickGetSize(wand, @ori_width, @ori_height) = MagickTrue) then begin showmessage('blub'); // WIRD angezeigt end; // Leider steht in ori_width und ori_height nichts drinne.. end; HELP!^^ |
Re: DLL in Delphi ansprechen - Zugriff auf Variabeln
Hallo,
ich nehme bei Pointern immer var
Delphi-Quellcode:
Dann ist auch der Aufruf einfacher (kein Pointer notwendig).
function MagickGetSize(wand: PMagickWand; var cols, rows : Cardinal): MagickBooleanType; cdecl; external 'blub.dll' index 311;
Ausserdem würde ich mal statt dem cdecl mal stdcall versuchen. Heiko |
Re: DLL in Delphi ansprechen - Zugriff auf Variabeln
Hmm also die Änderung mit var und so hat auch nichts gebracht.. Wie könnte ich den vielleicht die DLL debuggen? Damit ich sehen kann ob da überhaupt ein richtiger Wert drinne steht?
|
Re: DLL in Delphi ansprechen - Zugriff auf Variabeln
Hi Blizzard,
hmm. Ein ![]() Hast Du Dir denn schon mal das angesehen? ![]() Gruß Assertor |
Re: DLL in Delphi ansprechen - Zugriff auf Variabeln
@Doppelpost: hmm ja der andere war mehr darauf bezogen ob jemand konkrete Ahnung mit ImageMagick hat... hier gings mir mehr drum ob ich vielleicht was beim importen der C header falsch gemacht hab... Sry :D
@Die Wrapper: ja schonmal reingeguckt, aber der erzeugt ja eine ganze Komponente, das will ich gar nicht.. ich will mehr eine Kommandozeilenanwendung haben.. Da kann ich eine Komponente nicht brauchen.. |
Re: DLL in Delphi ansprechen - Zugriff auf Variabeln
Wenn die Funktion wirklich so kurz ist, kannst du sie doch in der CPU-Ansicht debuggen. Falls du Assembler nicht verstehst, könntest du die Mnemonics auch einfach hier posten.
|
Re: DLL in Delphi ansprechen - Zugriff auf Variabeln
Zitat:
|
Re: DLL in Delphi ansprechen - Zugriff auf Variabeln
Zitat:
Diese Unit ist zwar relativ gross, macht deine Anwendung aber nicht grösser, das fast alles nur Deklarationen sind. Nur wenn du diese quasi "offizielle" API Übersetzung nimmst, kann die Sache gutgehen. |
Re: DLL in Delphi ansprechen - Zugriff auf Variabeln
Ok danke :D
Der Wrapper von ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:50 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