Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   C++-/C-Code in FreePascal-Projekt linken unter Windows (https://www.delphipraxis.net/144935-c-c-code-freepascal-projekt-linken-unter-windows.html)

MStoll 20. Dez 2009 02:13


C++-/C-Code in FreePascal-Projekt linken unter Windows
 
Hi @all,

in ftp://ftp.freepascal.org/pub/fpc/doc...FreePascal.pdf wird ja beschrieben, wie man C++-Code in FreePascal reinlinken kann. Unter Linux funktioniert das 1A. Ich war selbst überrascht.
Habe 2 Prozeduren in C++ gehabt, die PNGs lesen und schreiben und darin auch auch Dinge wie std::vector usw. verwenden (also richtigen C++-Code, nicht nur C) und konnte die einfach dadurch benutzen, indem ich die Prozedur-Köpfe in FreePascal deklariere, die C++-Datei mit dem g++ in eine .o-Datei compiliere und dann {$link c_datei.o} sowie {$linklib stdc++} in die entsprechende Unit, wo ich die Prozedur-Köpfe deklariert habe, reinschreibe. Dafür braucht man dann auch keine C-Zwischenstufe (wie etwa in dem Artikel beschrieben), sondern es geht direkt (solange man nur Funktionen/Prozeduren teilt und keine C++-Objekte).

Allerdings funktioniert {$linklib stdc++} unter Windows nicht und damit kann ich den C++-Code dort auch nicht verwenden, da die ganzen C++-Basics nicht mit in das Programm gelinkt werden. Hat jemand eine Idee, wie man das äquivalent unter Windows macht? Habe sowohl unter Linux wie auch unter Windows gcc und g++ installiert.

Danke und Gruß
Michael

MStoll 21. Dez 2009 01:33

Re: C++-/C-Code in FreePascal-Projekt linken unter Windows
 
Hi nochmal,

ich konnte das Problem in der Zwischenzeit glücklicherweise selbst lösen. Man muss lediglich das lib-Verzeichnis der MinGW-Installation in den Pfad aufnehmen und dann je nach Bedarf mittels {$linklib } die entsprechenden Bibliotheken linken, mindestens aber mscvrt, evtl. auch noch kernel32. Wenn man dann noch die in seinem C++-Code benötigten Bibliotheken auf die gleiche Weise statisch linkt, dann kann man schön mittels {$link } seine mit g++ compilierten .o-Dateien in den Code linken. Oder man benutzt gleich die Funktionen aus den Bibliotheken, wenn man nur welche braucht, die FreePascal nicht bereits bietet.

Gruß
Michael


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:02 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