![]() |
C++-DLL
Hi DP :hi: :hi: :hi: ,
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. |
Re: C++-DLL
Guckst du hier:
![]() |
Re: C++-DLL
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 :gruebel: Ich binde die funktion mit:
Delphi-Quellcode:
ein.
function add(a: integer; b:integer):integer; stdcall; external 'addDLL.dll';
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 |
Re: C++-DLL
Zeig mal die Deklaration deiner Funktion in der DLL. :)
Hast du dort auch __stdcall gesetzt? |
Re: C++-DLL
Hallo,
öhmmm :gruebel: 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:
sehe ich da keinen von dir erwähnten _stdcall. :wiejetzt:
EXPORT int add(int a, int b)
Gruß Oliver |
Re: C++-DLL
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.
|
Re: C++-DLL
Zitat:
Code:
Versuchs mal so. :)
EXPORT int __stdcall add(int a, int b)
|
Re: C++-DLL
Zitat:
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 |
Re: C++-DLL
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:
gruß Oliver |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:33 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