Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Linken von Obj Dateien (https://www.delphipraxis.net/202177-linken-von-obj-dateien.html)

flashpixx 6. Okt 2019 15:59

Linken von Obj Dateien
 
Hallo,

ich habe eine C Bibliothek, die ich gerne direkt mit in BPL mit linken möchte. Ich arbeite mit dem Rad Studio 12.2.3 (Tokio). Ich kompiliere die einzelnen C Dateien mit Visual Studio und erhalte die OBJ-Dateien. Im Delphi Code habe ich den Eintrag
Code:
{$L c_path\mylib.obj}
stehen, aber ich erhalte den Fehler
Delphi-Quellcode:
dcc32 Fehler E2065 Ungenügende Forward- oder External Deklaration
. Die entsprechende C Funktionen sind mit cdecl und external im Pascal Code gekennzeichnet. Die C-Dateien selbst lassen sich ohne Probleme mit
Code:
cl /c mylib.c
übersetzen.

Wie linke ich die Dateien korrekt zusammen?

Danke

hoika 6. Okt 2019 17:01

AW: Linken von Obj Dateien
 
Hallo,
ich glaube nicht, dass die Formate kompatibel,sind.
DLL oder COM-Objekt wäre eine Lösung.

Uwe Raabe 6. Okt 2019 17:40

AW: Linken von Obj Dateien
 
Ich kenne auch nur funktionierende Lösungen, bei denen die obj-Dateien mit C++-Builder compiliert wurden.

flashpixx 6. Okt 2019 22:07

AW: Linken von Obj Dateien
 
Wenn ich die C-Dateien mit cem C++-Builder übersetze in OBJ-Dateien, dann sollte das funktionieren? Mein Ziel ist es eine BPL zu erzeugen und eben dort einzelne C-Funktionen zu nutzen ohne eine zusätzliche DLL o.ä.

hoika 7. Okt 2019 10:53

AW: Linken von Obj Dateien
 
Hallo,
vielleicht hilft Dir dieser Link weiter.

http://rvelthuis.de/articles/articles-cobjs.html

flashpixx 7. Okt 2019 21:30

AW: Linken von Obj Dateien
 
Aus meiner Sicht sollte es aber, da das Name Mangling bei C normiert ist, eigentlich sollte es somit passen. Ich schaue mir den C++ Builder einmal und versuche es damit

Rollo62 8. Okt 2019 06:37

AW: Linken von Obj Dateien
 
Vielleicht hilft Dir das hier und das weiter ?

DualCoreCpu 9. Okt 2019 11:12

AW: Linken von Obj Dateien
 
Microsoft verwendet für Objektdateien das COFF Format. Delphi verwendet das OMF Format. Es braucht also erst mal eine Umwandlung Coff2Omf.

flashpixx 9. Okt 2019 16:22

AW: Linken von Obj Dateien
 
Zitat:

Zitat von DualCoreCpu (Beitrag 1449355)
Microsoft verwendet für Objektdateien das COFF Format. Delphi verwendet das OMF Format. Es braucht also erst mal eine Umwandlung Coff2Omf.

Habe ich mittels Objconv versucht. Ich habe auch einmal den bcc32 ausprobiert und mir die Obj-Dateien erzeugt, aber weder die bcc32 kompilierten Obj-Dateien noch die von von MS Visual Studio compilierten Dateien lassen sich in irgendeiner Form mit dem dcc32 linken. Der Fehler E2065 "Ungenügende Forward- oder External-Deklaration" erscheint weiterhin. Wenn ich mit dumpbin mir die Symbole in der Obj-Datei anschaue, dann stimmen diese auch. Ebenso wenn im Pascal Code ein cdecl oder external verändere, habe ich keine Chance.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf