Es klappt auch problemlos, von Purebasic aus Variablen an die aufgerufene Funktion aus der DLL zu übergeben; ich hab allerdings ein Problem damit, daß die Funktion einen String nicht richtig zurückliefert.
Konkret:
Code: Alles auswählen
library hallotest;
function hallowelt(wasschreiben: pchar): pchar; export;
begin
writeln(wasschreiben);
hallowelt:='Ok, habs hingeschrieben';
end;
exports
hallowelt;
end.
Nun der aufrufende Purebasic-Code:
Code: Alles auswählen
OpenConsole()
OpenLibrary (1,"hallotest.dll")
*rueckgabe.l = CallFunction (1, "hallowelt", "Hallo du da!")
CloseLibrary (1)
ConsoleLocate(1,2)
PrintN (PeekS(*rueckgabe.l))
Input()
CloseConsole()
Nun sollte eigentlich der Cursor in der zweiten Zeile der Console platziert und dort der Inhalt des zurückgegebenen Strings ausgegeben werden, es tritt jedoch eine Schutzverletzung auf -> also müsste ja was mit der Pointeradresse nicht stimmen? Was genau hab ich falsch gemacht?