Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Übergabe von Interface an DLL führt zu AccessViolation

  Alt 7. Okt 2016, 19:32
als erstes solltest Du die
Exporte auch mit stdcall aufrufen.
Nee, wieso denn?

Es ist nur wichtig, dass auf beiden Seiten die Schnittstellen gleich aussehn
und wenn hier EXE und DLL mit Delphi geschrieben sind, dann kann die Aufrufkonvention auch problemlos "register" bleiben.

Was man aber nicht machen darf, ist einen PWideChar wie einen String aussehn zu lassen.

DelphiStrings sind zwar intern zu PChar kompatibel (PChar(String) ist also OK), aber andersrum natürlich nicht (niemals String(PChar) ).

Und wenn in der DLL ein String in einen PChar gecastet wurde, dann darf der dennoch nicht zurück nach String gecastet werden.
* Die speicherverwaltung von DLL und EXE sind standardmäßig getrennt (jeder hat seine Eigene)
* und bei Strings gibt es den Sonderfall des Leerstrings, wo der PChar(String) -Cast auf eine Konstante mit dem Inhalt #0#0 umleitet.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 7. Okt 2016 um 19:37 Uhr)
  Mit Zitat antworten Zitat