![]() |
Funktion einer C++ Dll in Delphi aufrufen
Hallo!
Ich will mit c++ eine Dll machen die eine Funktion exportiert. Diese soll in Delphi aufgerufen werden. Aber irgendwas mache ich falsch: Wenn ich das Delphi Progamm starte kommt der Fehler dass der Prozedur Einsprungspunkt "test" nicht gefunden wurde. Hier mein code: Die Dll (cpp):
Code:
Aufruf:
#pragma comment(lib, "MEMMGR.LIB")
__declspec( dllexport ) char* test() { return "Hello World"; } int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; }
Delphi-Quellcode:
PS: ich hab eigentlich noch nie was mit dlls und c++ gemacht. Habe also wenig davon :-(
type
function test: Pchar;external 'Project1.dll'; [...] procedure TForm1.Button1Click(Sender: TObject); begin showmessage(test); end; Danke an alle Leute die sich Samstag Abend noch mit solchen Problemen befassen!!! |
Re: Funktion einer C++ Dll in Delphi aufrufen
Von C++ exportierte Funktionsnamen sind sog. mangled names. Sie enthalten informationen über die Parameter usw. Jeder C++ Compiler generiert da seine eigenen Namen.
Da C++ Compiler auch C Compiler sind, kannst du die Funktionen als C-Funktionen exportieren.
Code:
Hast du das ganze mit dem Borland C++ Compiler kompiliert, lautet der Funktionsnamen nun "_test". Mit MSVC ist es ein schlichtes "test".
extern "C" {
__declspec( dllexport ) char* test() { return "Hello World"; } } In Delphi kannst du die Funktion nun leicht importieren:
Delphi-Quellcode:
Das cdecl ist hier wichtig, weil es angibt, in welcher Reihenfolge und wie die Parameter übergeben werden.
function test: PChar; cdecl; external 'Project1.dll' name '_test';
|
Re: Funktion einer C++ Dll in Delphi aufrufen
DANKE DANKE DANKE!!!
Meine Rettung kurz vor der Verzweiflung! :dancer2: :dancer: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 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