AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

C++-DLL

Ein Thema von TurboMartin · begonnen am 13. Nov 2006 · letzter Beitrag vom 20. Nov 2006
Antwort Antwort
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#1

C++-DLL

  Alt 13. Nov 2006, 20:37
Hi DP ,
ich bin zur Zeit dabei, eine DLL in C++-Builder zu schreiben.
Allerdings blicke ich in der Hilfe nicht ganz durch.
Wie exportiere ich eine Funktion?
Und in der Hilfe unter Creating DLLs in C++Builder steht so ein gGerüst mit allen Funktionen, in der vorgefertigten cpp-Datei allerdings nicht.
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: C++-DLL

  Alt 13. Nov 2006, 22:38
Guckst du hier: http://www.delphi-forum.de/viewtopic...=388086#388086
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
dbdeath74

Registriert seit: 30. Aug 2005
53 Beiträge
 
#3

Re: C++-DLL

  Alt 20. Nov 2006, 11:27
Hallo Luckie,

ich habe dein Beispiel mal versucht

Visual c++ 2005 express erzeugt auch die dll.

Wenn ich nun versuche diese in Delphi einzubinden kompiliert er zwar, aber schon beim Aufruf von createForm kommt ein Speicherzugrifffehler

Ich binde die funktion mit:
function add(a: integer; b:integer):integer; stdcall; external 'addDLL.dll'; ein.

Frage:
Hat die header datei wirklich nur diese eine Zeile?
Ich habe die def datei zwar angelegt im c++ projekt, aber wie sage ich dem Linker das er sie benutzen soll?
Oder mache ich grundsätzlich etwas falsch? *g

Gruß Oliver
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#4

Re: C++-DLL

  Alt 20. Nov 2006, 11:32
Zeig mal die Deklaration deiner Funktion in der DLL.

Hast du dort auch __stdcall gesetzt?
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
dbdeath74

Registriert seit: 30. Aug 2005
53 Beiträge
 
#5

Re: C++-DLL

  Alt 20. Nov 2006, 11:39
Hallo,

öhmmm

Ich habe die drei Dateien aus Luckies Link orginal mit dem Quelltext angelegt wie sie da stehen. (addDLL.cpp, addDLL.h, addDLL.def)

Geändert habe ich an dieser Stelle nichts.
Und wenn ich mir die Deklaration in der cpp anschaue
Code:
EXPORT int add(int a, int b)
sehe ich da keinen von dir erwähnten _stdcall.

Gruß Oliver
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: C++-DLL

  Alt 20. Nov 2006, 11:42
Ich weiß jetzt nicht mehr mit was ich das programmiert habe. Aber unter VS kann man in den Projektoptionen einstellen, dass standardmäßig die Aufrufkonvention stdcall benutzt wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#7

Re: C++-DLL

  Alt 20. Nov 2006, 11:47
Zitat von dbdeath74:
Hallo,

öhmmm

Ich habe die drei Dateien aus Luckies Link orginal mit dem Quelltext angelegt wie sie da stehen. (addDLL.cpp, addDLL.h, addDLL.def)

Geändert habe ich an dieser Stelle nichts.
Und wenn ich mir die Deklaration in der cpp anschaue
Code:
EXPORT int add(int a, int b)
sehe ich da keinen von dir erwähnten _stdcall.

Gruß Oliver
Code:
EXPORT int __stdcall add(int a, int b)
Versuchs mal so.
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#8

Re: C++-DLL

  Alt 20. Nov 2006, 11:49
Zitat von dbdeath74:
sehe ich da keinen von dir erwähnten _stdcall.
Hi,
dann siehst du aber sicherlich auch nicht, dass die Dll statisch mit stdcall als Aufrufkonvention gebunden wird, oder?

Du kannst einfach ein __stdcall (achtung, 2 _) vor das __declspec(dllexport) setzen, dann sollte das mit dem Stdcall klappen. Ansonsten kommt es (imo) auf den Compiler an, was du hier für eine Aufrufkonvention vorfindest. Mit etwas Glück wäre das direkt pascal, mit etwas Pech ist es eher der C-konforme cdecl.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
dbdeath74

Registriert seit: 30. Aug 2005
53 Beiträge
 
#9

Re: C++-DLL

  Alt 20. Nov 2006, 11:53
Hallo,

okay die Option habe ich gefunden.
Die stand auf _cdecl.
Jetzt geht alles
Also einfach umgestellt auf _stdcall in Projektoptionen.

Ich musste dem Linker auch noch meine def file mitgeben mit Additional Options beim Linker(Projektoptionen)
Muss man ja auch erstmal wissen *g
Zitat:
/DEF:"...\addDLL.DEF"
Vielen Dank für eure Hilfe

gruß Oliver
  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 03:55 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