![]() |
C++ mit Delphi vermischen
Hallo,
für ein demnächst anstehendes Projekt möchte ich in C++ DLLs erstellen und diese in Delphi verwenden. Habt ihr vielleicht ein Beispiel, aus dem hervorgeht, wie man mit „Borland C++“ DLL- Dateien erstellt und diese anschließend in Delphi verwendet? Hat jemand schon mal so was gemacht? :gruebel: DANNYBOY |
Re: C++ mit Delphi vermischen
Ich kenn mich C++ eigentlich nicht aus, aber DLL's werden, denke ich, auch nicht anders erstellt, einfach mit Parameter 'stdcall' deklarieren und genauso aufrufen.
Gruß DelphiFreund |
Re: C++ mit Delphi vermischen
Nicht vergessen die Funktionsdeklarationen in einen
extern "C" { einzuschliessen, damit das Name Mangling con C++ deaktiviert wird. Keine Klassen im API! |
Re: C++ mit Delphi vermischen
Zitat:
|
Re: C++ mit Delphi vermischen
Auch ohne Klassen generiert der C++ Compiler unterschiedliche exportierte Namen je nachdem ob die C Funktion in
die "extern "C" {" Klammer eingeschlossen ist oder nicht. Mit extern C wird beispielsweise "BlaBlubb" exportiert ohne "_BlaBlubb@P" Das nennt sich Name Mangling. Es werden die Typen der Parameter in den Namen kodiert. De Unterstrich ist amuesanterweise eine alte C-Tradition. Damit lassen sich gleiche Funktionen mit unterschiedlichen Namen unterscheiden (overload in Delphi). |
Re: C++ mit Delphi vermischen
Ach ja C++ Klassen sind komplett inkompatibel mit Delphi, deshalb nur einfache Funktionen exportieren.
|
Re: C++ mit Delphi vermischen
Zitat:
|
Re: C++ mit Delphi vermischen
Zitat:
Kurz: Es geht 'irgendwie', aber der Aufwand lohnt sich in 99% der Fälle nicht. |
Re: C++ mit Delphi vermischen
Zitat:
![]() |
Re: C++ mit Delphi vermischen
Sehr interessant, das wäre nämlich ohnehin meine nächste Frage gewesen,
wie das Ganze im OOP-Bereich aussieht. Ich kann mir konkret noch nicht vorstellen, wie man in C++ eine DLL-Datei erstellt. Das Importieren in Delphi verstehe ich schon ganz gut. Habt ihr vielleicht ein kleines Beispiel, welches eine einzige C++-Funktion exportiert? :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz