Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++ DLL in Delphi - Exportname der Methoden (https://www.delphipraxis.net/123070-c-dll-delphi-exportname-der-methoden.html)

Lemmy 27. Okt 2008 06:50


C++ DLL in Delphi - Exportname der Methoden
 
Hallo,

ich habe hier eine C++ DLL (C++Builder 5) die lt. Headerdatei die Methoden exportiert:

Code:
//Initialisierung der Liste
void InitialisierungDLL(); // muss vor der ersten Verwendung aufgerufen werden
void DeinitialisierungDLL(); // muss nach der letzten Verwendung aufgerufen werden,
Wenn ich versuche die Methode einzubinden geht nichts (die Methode wird nicht gefunden). Ich habe jetzt mit einem PE-Explorer die DLL angeschaut und das kommt dabei raus:

Code:
@InitialisierungDLL$qv (Ordinal: 1, Entry Point RVA: 5118h (20.760))
@DeinitialisierungDLL$qv (Ordinal: 2, Entry Point RVA: 51fch (20.988))
Wenn ich die Methoden so anspreche, dann klappt das.
1. Warum ist das so?
2. Wie kann ich das umstellen (Zugriff auf die C++DLL ist vorhanden)

Ach ja: Das Zeugs nach dem "$" ist nicht immer identisch: qiidd4boolt5t5t5. Wenn ich mir das so anschauen könnten das die Typen der Übergabeparameter sein. dann sollte das eigentlich im Builder doch abstellbar sein. weiß jemand wie?

GRüße
Lemmy

nicodex 27. Okt 2008 07:25

Re: C++ DLL in Delphi - Exportname der Methoden
 
C++-Compiler verwenden für Symbole Names- und Typdekorationen, um Überladungen abbilden zu können.
Um das "name mangling" / die "name decoration" zu verringern, kann man die Exporte in C++ als "C" deklarieren (extern "C" {}).
Der normale Weg den exportierten Namen eines Symbols vorzugeben, ist die Verwendung einer Moduldefinitionsdatei (*.def).

Lemmy 27. Okt 2008 07:39

Re: C++ DLL in Delphi - Exportname der Methoden
 
Vielen vielen Dank Nico!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 Uhr.

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