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?