Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++ mit Delphi vermischen (https://www.delphipraxis.net/27113-c-mit-delphi-vermischen.html)

Dannyboy 4. Aug 2004 13:43


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

DelphiFreund 4. Aug 2004 13:47

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

Robert Marquardt 4. Aug 2004 14:28

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!

Dannyboy 12. Aug 2004 13:01

Re: C++ mit Delphi vermischen
 
Zitat:

Zitat von Robert Marquardt
Nicht vergessen die Funktionsdeklarationen in einen
extern "C" {
einzuschliessen, damit das Name Mangling con C++ deaktiviert wird.
Keine Klassen im API!

Vielleicht ein einfaches Beispiel? :gruebel:

Robert Marquardt 12. Aug 2004 14:03

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).

Robert Marquardt 12. Aug 2004 14:24

Re: C++ mit Delphi vermischen
 
Ach ja C++ Klassen sind komplett inkompatibel mit Delphi, deshalb nur einfache Funktionen exportieren.

Stevie 12. Aug 2004 14:29

Re: C++ mit Delphi vermischen
 
Zitat:

Zitat von Robert Marquardt
Ach ja C++ Klassen sind komplett inkompatibel mit Delphi, deshalb nur einfache Funktionen exportieren.

Da hab ich aber schon was anderes gelesen! Angeblich soll das gehen, wenn man in beiden Sprachen die Klasse gleich deklariert hat und gewisse Richtlinien beachtet hat. Dann kann man über den Pointer auf eine Instanz der erstellten Klasse zugreifen können. Aber hab ich noch nicht selber gemacht.

NicoDE 12. Aug 2004 14:51

Re: C++ mit Delphi vermischen
 
Zitat:

Zitat von Stevie
Da hab ich aber schon was anderes gelesen! Angeblich soll das gehen, wenn man in beiden Sprachen die Klasse gleich deklariert hat und gewisse Richtlinien beachtet hat. Dann kann man über den Pointer auf eine Instanz der erstellten Klasse zugreifen können. Aber hab ich noch nicht selber gemacht.

Dazu muss aber die beiden verwendeten Compiler ziemlich gut kennen. Und ohne einige Hacks wird man nicht auskommen.
Kurz: Es geht 'irgendwie', aber der Aufwand lohnt sich in 99% der Fälle nicht.

Stevie 12. Aug 2004 15:00

Re: C++ mit Delphi vermischen
 
Zitat:

Zitat von NicoDE
Dazu muss aber die beiden verwendeten Compiler ziemlich gut kennen. Und ohne einige Hacks wird man nicht auskommen.
Kurz: Es geht 'irgendwie', aber der Aufwand lohnt sich in 99% der Fälle nicht.

In diesem Artikel wird erklärt, wie's gehen soll!

Dannyboy 12. Aug 2004 15:10

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 01:49 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz