Einzelnen Beitrag anzeigen

messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Meine erste Butterfahrt - Eine dll mit dem BCB erstellen

  Alt 11. Feb 2010, 16:26
So,

das waren ja Krämpfe, aber mit dem Builder geht es jetzt. Lustig ist, dass sich das dll-Projekt nach dem Erstellen der dll selbst zerstört
Ich habe jetzt zum Probieren eine dll gebaut:
Code:
extern "C" __declspec(dllexport) double Multi(double Zahl1, double Zahl2);

double Multi(double Zahl1, double Zahl2)
{
  double result;
  result = Zahl1 * Zahl2;
  return result;
}
Wozu das alles entscheidende extern "C" reinmuss, ist mir nicht ganz klar geworden.

Nun wollte ich die Funktion mal in einem Delphi-Projekt testen. Dazu erstmal statisch geladen:
Delphi-Quellcode:
var
  Form1: TForm1;
  function Multi(Zahl1 : double;Zahl2:double) : double; external 'Project9.DLL';


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  test : double;
begin
  test := Multi(9,6);
  ShowMessage(FloatToStr(test));
end;
Da wird der Prozedureinsprungpunkt "Multi" nicht gefunden. Was habe ich da falsch gemacht?
Beim Builder kann man das statische Laden durch Einbinden der lib in das Projekt erledigen. Gibt es etwas Vergleichbares in Delphi?

Danke, Messie

Edit: Ich habe mich gerade mal kurz in den Dependency Walker eingelesen und damit herausgefunden, wie die Prozedur tatsächlich heißt ("_Multi").
Ist denn das eine Festlegung, dass der Unterstrich immer da ist, wenn ich extern "C" benutze?
  Mit Zitat antworten Zitat