AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Funktion einer C++ Dll in Delphi aufrufen
Thema durchsuchen
Ansicht
Themen-Optionen

Funktion einer C++ Dll in Delphi aufrufen

Ein Thema von NikoMitDaMacht · begonnen am 11. Mär 2006 · letzter Beitrag vom 11. Mär 2006
Antwort Antwort
Benutzerbild von NikoMitDaMacht
NikoMitDaMacht

Registriert seit: 27. Apr 2004
Ort: Freiburg
298 Beiträge
 
Delphi 6 Enterprise
 
#1

Funktion einer C++ Dll in Delphi aufrufen

  Alt 11. Mär 2006, 18:16
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:
#pragma comment(lib, "MEMMGR.LIB")

__declspec( dllexport ) char* test()
{
   return "Hello World";
}

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
   return 1;
}
Aufruf:
Delphi-Quellcode:
type
function test: Pchar;external 'Project1.dll';

[...]
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(test);
end;
PS: ich hab eigentlich noch nie was mit dlls und c++ gemacht. Habe also wenig davon
Danke an alle Leute die sich Samstag Abend noch mit solchen Problemen befassen!!!
Niko
Alles was ein Ende hat, hat auch ein Anfang
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: Funktion einer C++ Dll in Delphi aufrufen

  Alt 11. Mär 2006, 18:22
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:
extern "C" {

__declspec( dllexport ) char* test()
{
   return "Hello World";


}
Hast du das ganze mit dem Borland C++ Compiler kompiliert, lautet der Funktionsnamen nun "_test". Mit MSVC ist es ein schlichtes "test".

In Delphi kannst du die Funktion nun leicht importieren:
function test: PChar; cdecl; external 'Project1.dllname '_test'; Das cdecl ist hier wichtig, weil es angibt, in welcher Reihenfolge und wie die Parameter übergeben werden.
  Mit Zitat antworten Zitat
Benutzerbild von NikoMitDaMacht
NikoMitDaMacht

Registriert seit: 27. Apr 2004
Ort: Freiburg
298 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Funktion einer C++ Dll in Delphi aufrufen

  Alt 11. Mär 2006, 18:30
DANKE DANKE DANKE!!!
Meine Rettung kurz vor der Verzweiflung!
Niko
Alles was ein Ende hat, hat auch ein Anfang
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 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