Also ich habe es statisch und dynamisch probiert, aber in beiden Fällen kommt nach Programmende die Exzeption. Was die Aufrufkonventionen angeht, da bin ich mir nicht so ganz sicher! Ich fide nirgends ein ordentliches Beispiel. Immer erklären die wie man ne
Dll schreibt mit Stringübergabe und bei der implementierung nehmen die ne
dll-Funktion mit nem integer, was natürlich vollkommen sinnig ist!!! bei mir sieht es so aus:
in der
DLL
Delphi-Quellcode:
library HelloWorld;
uses ShareMem, SysUtils, Classes, Dialogs;
procedure TextOut(AMessage : string); stdcall;
begin
ShowMessage(AMessage);
end;
{$R *.RES}
exports
TextOut;
begin
end.
und jetzt das eigentliche Programm
Delphi-Quellcode:
unit Unit1;
interface
uses ShareMem, Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type TForm1 =
class(TForm)
Button_ShowHelloWorld: TButton;
procedure Button_ShowHelloWorldClick(Sender: TObject);
end;
var Form1: TForm1;
implementation
procedure TextOut(AMessage :
string);
stdcall;
external '
HelloWorld.dll';
{$R *.DFM}
procedure TForm1.Button_ShowHelloWorldClick(Sender: TObject);
begin
TextOut('
Hallo Welt');
Self.Close;
end;
end.
Wo steckt mein Denkfehler???