Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#28

AW: C++ DLL (Funktion) nach Delphi

  Alt 20. Apr 2018, 14:24
Du musst nicht selber Speicher belegen.
Doch doch, eben schon. MyStruct* bzw. MyStruct& als Parameter in C/C++ bedeutet, dass du selbst einen Zeiger/Referenz übergibst. Den Speicher für das dahinterliegende Struct musst du durchaus selbst (entweder auf dem Stack oder dem Heap) bereitstellen. Als Zeiger/Referenz übergibt man die Structs, wenn man deren Inhalt ändern möchte (C/C++ kennt kein var ). const MyStruct*/& sieht man auch ab und zu, wobei es sich hierbei nur um eine manuelle Optimierung handelt, damit der Inhalt der
Structs beim Aufruf nicht auf den Stack gepusht werden.

Wie Neutral General schon angedeutet hat, ist MyStruct* äquivalent zu var (T)MyStruct in Delphi, was wiederrum äquivalent zu PMyStruct ist.

Die Dll liefert Dir den Pointer auf das Struct zurück.
In dem Falle wäre es MyStruct** bzw. MyStruct*&

Edit: Falsch gelesen, ist ja sogar void**
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat