![]() |
C++ DLL in Delphi - Exportname der Methoden
Hallo,
ich habe hier eine C++ DLL (C++Builder 5) die lt. Headerdatei die Methoden exportiert:
Code:
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:
//Initialisierung der Liste
void InitialisierungDLL(); // muss vor der ersten Verwendung aufgerufen werden void DeinitialisierungDLL(); // muss nach der letzten Verwendung aufgerufen werden,
Code:
Wenn ich die Methoden so anspreche, dann klappt das.
@InitialisierungDLL$qv (Ordinal: 1, Entry Point RVA: 5118h (20.760))
@DeinitialisierungDLL$qv (Ordinal: 2, Entry Point RVA: 51fch (20.988)) 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 |
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). |
Re: C++ DLL in Delphi - Exportname der Methoden
Vielen vielen Dank Nico!!!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 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-2025 by Thomas Breitkreuz