![]() |
Delphi DLL in C++ Builder
Hallo,
ich wollte meine Delphi DLL in ein C++ Builder einbinden. Wie rufe ich meine DLL Funktion dann statisch auf? Es hiess auf ein anderen Seite: @In diesem Falle sollte Dir die .lib und .h Datei zu Deiner Dll zur Verfügung stehen. Ist aber kein Problem da Du ja die Dll selber geschrieben hast. Füge die .lib Datei Deinem C++ Projekt hinzu, kopiere die Headerdatei und die Dll in dein Projektverzeichnis." Aber sowas gibt es doch bei Delphi nicht, oder? Und wie ist es mit der ersten Sharemem Unit, wie geht das mit C++ Builder?
Delphi-Quellcode:
function Summe(a, b: integer): integer; begin result:= a+b; end; exports Summe; begin end. |
Re: Delphi DLL in C++ Builder
Zitat:
Zitat:
Code:
//---------------------------------------------------------------------------
// Wichtiger Hinweis zur DLL-Speicherverwaltung, falls die DLL die statische // Version der Laufzeitbibliothek (RTL) verwendet: // // Wenn die DLL Funktionen exportiert, die String-Objekte (oder Strukturen/ // Klassen, die verschachtelte Strings enthalten) als Parameter oder Funktionsergebnisse übergibt, // muß die Bibliothek MEMMGR.LIB im DLL-Projekt und anderen Projekten, // die die DLL verwenden, vorhanden sein. Sie benötigen MEMMGR.LIB auch dann, // wenn andere Projekte, die die DLL verwenden, new- oder delete-Operationen // auf Klassen anwenden, die nicht von TObject abgeleitet sind und die aus der DLL exportiert // werden. Durch das Hinzufügen von MEMMGR.LIB wird die DLL und deren aufrufende EXEs // angewiesen, BORLNDMM.DLL als Speicherverwaltung zu benutzen. In diesem Fall // sollte die Datei BORLNDMM.DLL zusammen mit der DLL weitergegeben werden. // // Um die Verwendung von BORLNDMM.DLL, zu vermeiden, sollten String-Informationen als "char *" oder // ShortString-Parameter weitergegeben werden. // // Falls die DLL die dynamische Version der RTL verwendet, müssen Sie // MEMMGR.LIB nicht explizit angeben. //--------------------------------------------------------------------------- |
Re: Delphi DLL in C++ Builder
Super, danke. Nur mal so: geht das mit MS VC++ auch mit der MEMMGR.LIB?
Delphi erstellt nun die *.obj dabei scheint der Compiler aber auch immer mal einen CompilerFehler LE40 oder so zu bringen. Mit C++ kann ich nun die obj einbinden? |
Re: Delphi DLL in C++ Builder
Zitat:
Zitat:
|
Re: Delphi DLL in C++ Builder
Du solltest die Aufrufkonvention von Summe ändern. In Delphi ist Register der Standard, Register gibt es in C++ aber nicht. Nimm entweder Stdcall oder cdecl.
|
Re: Delphi DLL in C++ Builder
Der generierte Header ist speziell für C++Builder, und dort erhält die Funktion dann automatisch die äquivalente __fastcall-Aufrufkonvention. Soll die Funktion aber von VC oder einem anderen Compiler aus benutzt werden können (wobei sich die genannten Einschränkungen ergeben), solltest du die Aufrufkonvention tatsächlich in Delphi anpassen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14: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-2025 by Thomas Breitkreuz