Einzelnen Beitrag anzeigen

schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#11

Re: EXE als DLL Ersatz denkbar?

  Alt 9. Dez 2005, 14:32
Hallo!

Entschuldigt bitte meine Frage. Zuerst folgender Qouelltext:

Delphi-Quellcode:
program Project3;

{$APPTYPE CONSOLE}

uses
  SysUtils, SysInit, Windows;

procedure Proc1; external 'Project2.exe';
function AValue: Integer; external 'Project2.exe';
procedure Ausgabe(AText: String; AValue: Integer); external 'Project2.exe';

var LibHandle: HINSTANCE; //Wo finde ich diesen Datentyp? Hier bringt der Copiler die
                           //unten stehende Fehlermeldung!

begin
  { TODO -oUser -cConsole Main : Hier Code einfügen }
  LibHandle := LoadLibrary('Projct2.exe');
  GetProcAddress(LibHandle,'Ausgabe');
  Ausgabe('Dieser Wert lautet: ', 100);
  Readln;
end.
Das hier sagt mir die Delphi Hilfe:

Delphi-Quellcode:
HINSTANCE LoadLibrary(

    LPCTSTR lpLibFileName    // address of filename of executable module
   );
In der Windows Unit scheint der Datentyp nicht definiert zu sein.

Vom Compiler kriege ich folgende Fehlermeldung:

[Fehler] Project3.dpr(12): Konstante oder Typenbezeichner erwartet

Was soll das??? Die Hilfe sagt mir, das dert Typ HINSTANCE in der Unit System definiert ist und die wird doch eh automatisch mit eingebunden? Aufführen der System-Unit führt auch nicht zum Erfolg. Was kann ich hier machen, damit der Code funzt.

Hier ist noch der Code für die Bibliothek mit den zu exportierenden Routinen:

Delphi-Quellcode:
program Project2; //Enthält die zu exportierenden Routinen. (als EXE übersetzt)

{$APPTYPE CONSOLE}

uses
  SysUtils, SysInit, Windows;

procedure Proc1;
begin
   writeln('Aufruf der ersten Prozedur war erfolgreich!');
end;

function AValue: Integer;
begin
   Result := 4;
end;

procedure Ausgabe(AText: String; AValue: Integer);
begin
   writeln(AText, AValue);
end;

exports
  Proc1,
  AValue,
  Ausgabe;

begin

end.
Wenn ich das ohne LoadLibrary versuche, erhalte ich von Windows folgende Meldung:

"Die Datei Project3.exe ist verknüpft mit dem fehlenden Export Project2.exe Ausgabe".

Deshalb gehe ich davon aus, das ich, wenn ich das mit ner EXE statt mit ner DLL machen will, unbedingt mit LoadLibrary arbeiten muss. Aber da meckert der Compiler wegen HINSTANCE mit obiger Compilermeldung.

Was mache ich falsch? Weiß nicht mehr weiter.


schöni
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat