Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Sinnvolle Methode zum Linken von C/C++ Code in Delphi (https://www.delphipraxis.net/155107-sinnvolle-methode-zum-linken-von-c-c-code-delphi.html)

Assarbad 8. Okt 2010 13:57

Sinnvolle Methode zum Linken von C/C++ Code in Delphi
 
Moin,

würde gern eine C-Bibliothek (in Form einer .c-Datei) in ein Delphi-Projekt linken. Hat da jemand Erfahrung mit solchen Mischprojekten die keinen händischen Eingriff erfordern um bspw. die OBJ-Datei zu erzeugen die gelinkt werden soll (ob OBJ oder LIB ist mir im Endeffekt egal).

Alles was ich bisher sah, benutzte im Prinzip {$LINK ...} aber die OBJ-Datei mußte quasi "vorkompiliert" werden. Außerdem scheint mir die Dokumentation der maskierten Symbolnamen (bei dieser Methode) etwas mager, was mir immer wieder Probleme bereitet.

Danke.

Edit: es geht also speziell darum, daß ich innerhalb des Projektes wie es vom RAD Studio erstellt wird (oder innerhalb einer Projektgruppe) in die Lage versetzt werde den C-Code frisch zu kompilieren und dann in das Projekt reinzulinken.

Bernhard Geyer 8. Okt 2010 14:04

AW: Sinnvolle Methode zum Linken von C/C++ Code in Delphi
 
Da Delphi keinen C-Compiler hat könnnen C/CPP-Dateien nicht direkt verwendet werden sondern nur die Zwischenkompilate ALA *.obj.

mkinzler 8. Okt 2010 14:07

AW: Sinnvolle Methode zum Linken von C/C++ Code in Delphi
 
Da er wohl das RAD-Studio hat, welches einen C-Compiler beinhaltet, sollte es theroetisch möglich sein. Notfalls halt mit manueller Build-Skript Anpassung

Btw.: Welcome Back Olli.

himitsu 8. Okt 2010 14:11

AW: Sinnvolle Methode zum Linken von C/C++ Code in Delphi
 
Ich kenn auch nur den Weg über die vorkompilierte OBJ.

Eventuell gibt es ja ab XE2 was, wenn die da eh einen neuen Compiler nutzen? :gruebel:

Oder nutzt das PreCompile-Script und compilierst dort die C in eine OBJ,
bzw. man bindet einen PreCompiler in sein Delphi ein, welcher die PAS/DPR parst, nach einem "eigenen"
Delphi-Quellcode:
{$CLINK xyz.c}
(oder sonstwie) sucht, die C-Datei kompiliert und den Befehl durch
Delphi-Quellcode:
{$LINK Temp.obj}
ersetzt, bevor sich der Delphi-Compilier die Datei vornimmt.


Jupp, und willkommen :hi:

Assarbad 8. Okt 2010 14:17

AW: Sinnvolle Methode zum Linken von C/C++ Code in Delphi
 
Zitat:

Zitat von mkinzler (Beitrag 1054555)
Da er wohl das RAD-Studio hat, welches einen C-Compiler beinhaltet, sollte es theroetisch möglich sein. Notfalls halt mit manueller Build-Skript Anpassung

Exakt. Ein manuelles Build-Skript ist aber auch nur Frickelei, weil ich dort entweder den Pfad (zum Compiler) hartkodieren müßte oder über jede Menge ansonsten unsinnigen Code ermitteln müßte.

Zitat:

Zitat von mkinzler (Beitrag 1054555)
Btw.: Welcome Back Olli.

Danke. Dieser Name war leider schon vergeben, meines Wissens nach aber nicht an mich.

Zitat:

Zitat von himitsu (Beitrag 1054556)
Ich kenn auch nur den Weg über die vorkompilierte OBJ.

Eventuell gibt es ja ab XE2 was, wenn die da eh einen neuen Compiler nutzen? :gruebel:

Kombiniert gibt es ja den C++ Builder schon lange mit Delphi zusammen. Seltsam, daß da noch niemand sonst Bedarf angemeldet hat. Immerhin ist Build-Automatisierung eines der großen Themen in modernen Programmierparadigmen. Unabdingbar für "Continuous Integration", beispielsweise.

Zitat:

Zitat von himitsu (Beitrag 1054556)
Oder nutzt das PreCompile-Script und compiliert dort die C in einen OBJ,
bzw. man bindet einen PreCompiler in sein Dlphi ein, welcher die PAS/DPR parst, nach einem "eigenen"
Delphi-Quellcode:
{$CLINK xyz.c}
(oder sonstwie) sucht, die C-Datei kompiliert und den Befehl durch
Delphi-Quellcode:
{$LINK Temp.obj}
ersezt, bevor sich der Delphi-Compilier die Datei vornimmt.

Das klingt interessant. Kannst du mir da irgendwelche Links geben bei denen ich mich belesen kann?

Zitat:

Zitat von himitsu (Beitrag 1054556)
Jupp, und willkommen :hi:

Danke danke ;)

himitsu 8. Okt 2010 14:23

AW: Sinnvolle Methode zum Linken von C/C++ Code in Delphi
 
Nee, leider nicht.

Ich hatte vor einer Weile mal einen PreCompiler für's RAD-Studio (2006 oder 2007) gesehn, welcher z.B.
Delphi-Quellcode:
_LINE_
,
Delphi-Quellcode:
_FILE_
und Ähnliches ersetzen konnte.
Ich weiß auch nicht ob/wie man da z.B. über die OTA rankommt.

Fand das recht interessant, aber leider finde ich diesen nicht mehr :(
Abgesehn von einem für D7, aber dieser läßt sich leider nicht auf neuere Delphi portieren. :cry:

Bernhard Geyer 8. Okt 2010 14:26

AW: Sinnvolle Methode zum Linken von C/C++ Code in Delphi
 
Zitat:

Zitat von himitsu (Beitrag 1054562)
Ich hatte vor einer Weile mal einen PreCompiler für's RAD-Studio (2006 oder 2007) gesehn, welcher z.B.
Delphi-Quellcode:
_LINE_
,
Delphi-Quellcode:
_FILE_
und Ähnliches ersetzen konnte.
Ich weiß auch nicht ob/wie man da z.B. über die OTA rankommt.

Fand das recht interessant, aber leider finde ich diesen nicht mehr :(

Sowas hat die Jedi in den Debug-Units drin. Geht aber AFAIK nur zur Laufzeit mit entsprechenden Debug-Infos.

mkinzler 8. Okt 2010 14:33

AW: Sinnvolle Methode zum Linken von C/C++ Code in Delphi
 
Zitat:

Zitat von himitsu (Beitrag 1054562)
Ich hatte vor einer Weile mal einen PreCompiler für's RAD-Studio (2006 oder 2007) gesehn, welcher z.B.
Delphi-Quellcode:
_LINE_
,
Delphi-Quellcode:
_FILE_
und Ähnliches ersetzen konnte.

Du meinst wahrscheinlich die DLangExtensions vom Andreas Hausladen (jbg)

generic 8. Okt 2010 14:38

AW: Sinnvolle Methode zum Linken von C/C++ Code in Delphi
 
Du kannst übrigens nicht jeden C-Compiler nutzen, da Delphi nur Objekt-Dateien welche im OMF Format vorliegen linken kann!

Assarbad 8. Okt 2010 14:40

AW: Sinnvolle Methode zum Linken von C/C++ Code in Delphi
 
Zitat:

Zitat von mkinzler (Beitrag 1054566)
Du meinst wahrscheinlich die DLangExtensions vom Andreas Hausladen (jbg)

Interessantes Projekt, danke schonmal dafür.

Zitat:

Zitat von generic (Beitrag 1054568)
Du kannst übrigens nicht jeden C-Compiler nutzen, da Delphi nur Objekt-Dateien welche im OMF Format vorliegen linken kann!

Ist bekannt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:51 Uhr.
Seite 1 von 2  1 2      

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