![]() |
Delphi DLL und deren Import in C/C++
Hi DP'ler,
ich versuche eine von mir in Delphi erstellte DLL in ein C/C++ Projekt im Visual Studio einzubinden. Da ich sowas bisher noch nie zuvor gemacht hab, hab ich auch dementsprechend keine Ahnung. Ich hab mich daher ein wenig Informiert, und die einzige Möglichkeit eine DLL statisch einzubinden ist scheinbar eine .lib-Datei. Ich habe auch noch gelesen, dass man sich so ne lib-Datei mit dem Tool "implib" erstellen kann. Wenn ich die damit erstellte lib-Datei dann aber in Visual Studio einbinde (per #pragma comment(lib, "lib.lib") ), dann krieg ich immer noch den Fehler, dass ich einen Verweis auf ein nichtaufgelöstes Symbol in meinem Code habe. Kennt jemand das Problem? Oder gibt es auch noch andere Möglichkeiten eine DLL statisch einzubinden oder eine lib-Datei zu erstellen? danke, Philipp |
Re: Delphi DLL und deren Import in C/C++
|
Re: Delphi DLL und deren Import in C/C++
Zitat:
|
Re: Delphi DLL und deren Import in C/C++
Wenn du auf Delphispezialitäten wie Strings u.ä. im Interface verzichtest, kannst du die Dlls wie jede andere in C-Programme einbinden.
|
Re: Delphi DLL und deren Import in C/C++
Zitat:
(Hast du dir eigentlich meinen ersten Post überhaupt durchgelesen?) |
Re: Delphi DLL und deren Import in C/C++
Nein in kann nämlich gar nicht Lesen
man könnte auch die Hilfer zum C-Kompiler Lesen und würde dann auf IMPLIB stossen |
Re: Delphi DLL und deren Import in C/C++
Zitat:
Ich wollte dir nur sagen, dass die Seite hinter dem Link den du gepostet hast mein Problem noch nichtmal anschneidet, genauso wie deine zweite Antwort. Zitat:
Und das lässt mich eben zu dem Schluss kommen, dass du meinen Post gar nicht erst durchgelesen hast. Ich will dich damit in keiner weise beschuldigen, aber ich denke, dass dies eben nahe liegt. |
Re: Delphi DLL und deren Import in C/C++
libs werden per Linker eingebunden.
|
Re: Delphi DLL und deren Import in C/C++
HI Philipp
zum Beispiel so: in den Header schreibst du unter der privaten Deklaration HINSTANCE DllInstance; in deine Unit schreibst du es so: if (!DllInstance)DllInstance = LoadLibrary("Test.dll"); // DLL Laden if (DllInstance) Form1->Caption =" DLL wurde geladen "; else Form1->Caption = " DLL wurde nicht geladen "; somit hast du die Delphi DLL geladen und kannst somit diese nutzen um auf die Funktionen zuzugreifen schreibst du folgendes: typedef PChar(_stdcall *IMPFUNC) (); IMPFUNC DllFunktion; if (DllInstance) { DllFunktion = (IMPFUNC)GetProcAddress(DllInstance,"Der Name der Funktion hier eintragen"); if (DllFunktion) { Memo1->Lines->Add(DllFunktion()); } else Memo1->Lines->Add("Funktionsname existiert nicht"); } else { Memo1->Lines->Add("Bitte Dll laden"); } somit kannst du unter C++ eine Delphi dll einbinden ich habe die Delphi DLL in den BCB mit eingebunden und es funzt sehr gut Daniel |
Re: Delphi DLL und deren Import in C/C++
Zitat:
Ich denke, dass das Problem an meiner Lib-Datei liegt, die ich mir mit dem Borland implib-tool erstellt habe. @D.Schmidt: Du bindest in deinem Beispiel die DLL dynamisch zur Laufzeit ein, ich würde dies aber der Einfachheit halber gerne statisch machen (wobei ich an der "Einfachheit" dieser Methode langsam zu zweifeln anfange). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 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