![]() |
[DLL] Procedure Deklarieren
Hi DPler
Bin ich echt zu blöd um in einer DLL eine procedure zu deklarieren? Also ich hab zwei proceduren in meiner DLL eine davon wird export und die andere nicht. Ich muss eine davon deklarieren da sonst immer eine davon nicht gefunden wird, denn die eine ruft die andere auf und umgekert. Also wenn ich jetzt eine davon unter die andere schreib dann wird klarerweiße die andere nicht mehr gefunden. Naja kompliziert aber logisch :mrgreen: Hier mal mein Source:
Delphi-Quellcode:
Ich hoff ihr versteht mich
library TestPlugin;
uses [..] {$R *.res} var PluginSend : procedure(Befehl : integer; Parameter : Pointer); procedure PluginMain(Befehl : integer; Parameter : Pointer); stdcall; begin case Befehl of BefehlToPlugin_PluginInit://PluginInit begin PluginSend := TPluginRecordToPlugin_PluginInit(Parameter^).PluginSend; ObserverAnmeldung; //<-- Wird nicht gefunden weil es unten steht end; end; end; procedure ObserverAnmeldung; var TempPluginRecordToApp_PluginMain : TPluginRecordToApp_PluginMain; begin TempPluginRecordToApp_PluginMain.PluginMain := PluginMain; //<-- Hier wird die PluginMain zwar gefunden aber nur weil diese procedure unten steht PluginSend(BefehlToPlugin_PluginFree*-1, @TempPluginRecordToApp_PluginMain); end; exports PluginMain; begin end. |
Re: [DLL] Procedure Deklarieren
Delphi-Quellcode:
Du exportierst ja auch nur eine. Üch würde dem export auch einen namen geben, wenn die cassensitive Procedure auch von anderen Sprachen genutzt werden soll.
exports PluginMain;
|
Re: [DLL] Procedure Deklarieren
@mkinzler: Lies dir den ersten Post nochmal durch.
@gsh: Dazu gibt es den interface-Abschnitt ;) . interface-Abschnitte gibt es jedoch wiederum nur in seperaten Units. Deine library-Datei besteht dann also nur noch aus uses und exports. |
Re: [DLL] Procedure Deklarieren
Ja des ist mir klar des ich nur eine exportiere
Die andere will ich ja nicht exporiteren Die procedure ObserverAnmeldung; soll nur in der DLL aufrufbar sein und dient der Übersicht. //Nachtrag (dank roter box): @Khabarakh: Meine DLL hat keinen interface abschnitt. und wenn ich interface hinschreib dann mag er des nicht. Des hät ich nämlich schon probiert |
Re: [DLL] Procedure Deklarieren
Zitat:
[edit: Warum verwendest du kein forward?] |
Re: [DLL] Procedure Deklarieren
@gsh: Editiert.
@mkinzler: Auch eine Möglichkeit. Wenn die Dll umfangreicher wird, würde ich trotzdem mit dem Auslagern anfangen. |
Re: [DLL] Procedure Deklarieren
Zitat:
edit: Zitat:
|
Re: [DLL] Procedure Deklarieren
Notier ObserverAnmeldung einfach vor PluginMain.
|
Re: [DLL] Procedure Deklarieren
Zitat:
|
Re: [DLL] Procedure Deklarieren
Delphi-Quellcode:
procedure ObserverAnmeldung; forward;
procedure PluginMain(Befehl : integer; Parameter : Pointer); stdcall; begin ... end; procedure ObserverAnmeldung; var TempPluginRecordToApp_PluginMain : TPluginRecordToApp_PluginMain; begin ... |
Re: [DLL] Procedure Deklarieren
ah danke mkinzler
so gehts :thumb: |
Re: [DLL] Procedure Deklarieren
Gern geschehen, aber Khabarakh Tipp hätte auch funktioniert.
|
Re: [DLL] Procedure Deklarieren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:54 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