Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   C++ .lib Dateien in Delphi verwenden? (https://www.delphipraxis.net/177194-c-lib-dateien-delphi-verwenden.html)

Zacherl 23. Okt 2013 13:23

C++ .lib Dateien in Delphi verwenden?
 
Hallo zusammen,

ich weiß, das Thema ist schon öfters aufgegriffen worden, aber sämtliche Ergebnisse, die ich finden konnte, bezogen sich auf uralte Versionen von Delphi.

Daher nochmal meine Frage:
Es es mitlerweile möglich .lib Dateien in Delphi zu verwenden?

Im Speziellen geht es mir um die BASSMOD Library. Diese liegt zwar auch im .dll Format vor, allerdings würde ich gerne darauf verzichten noch eine zusätzliche Datei auszuliefern oder die .dll zur Laufzeit aus einer Resource zu droppen.

Viele Grüße
Zacherl

Robotiker 23. Okt 2013 14:23

AW: C++ .lib Dateien in Delphi verwenden?
 
Hallo,

.lib Dateien die Code enthalten, also keine Importbibliotheken für DLLs, sind normalerweise nur für genau die Compilerversion gedacht, mit der sie erstellt wurden. Das Speicherlayout von Klassen u.ä. kann bei anderen Compilern (und deren Versionen) anders sein.

Zacherl 23. Okt 2013 15:06

AW: C++ .lib Dateien in Delphi verwenden?
 
Aber soweit ich das verstanden habe, ist eine .lib Datei doch nur eine Sammlung von .obj Files (die man einzeln ohne Probleme mit Delphi benutzen kann) oder nicht?

Mikkey 23. Okt 2013 15:11

AW: C++ .lib Dateien in Delphi verwenden?
 
Zitat:

Zitat von Zacherl (Beitrag 1232899)
Aber soweit ich das verstanden habe, ist eine .lib Datei doch nur eine Sammlung von .obj Files (die man einzeln ohne Probleme mit Delphi benutzen kann) oder nicht?

Jedenfalls kannst Du eine Lib mit dem Linker auseinandernehmen und alle objs herausholen.

Ob die mit Delphi benutzt werden können, bin ich überfragt.

Nachtrag: Es ist lib.exe mit Option /EXTRACT

Robotiker 23. Okt 2013 17:09

AW: C++ .lib Dateien in Delphi verwenden?
 
Zitat:

Zitat von Zacherl (Beitrag 1232899)
Aber soweit ich das verstanden habe, ist eine .lib Datei doch nur eine Sammlung von .obj Files (die man einzeln ohne Probleme mit Delphi benutzen kann) oder nicht?

Entweder, die andere häufigere Art tritt zusammen mit einer .h und einer .dll Datei auf. Man verwendet eine DLL in C++ normalerweise indem man die .h und .lib ins Projekt mit aufnimmt (oder im Quelltext etwas in der Art #pragma comment(lib, "name") schreibt), dann kann man die aus der DLL exportierten Dinge benutzen, ohne dass man da noch extra was programmiert. Diese Art von Lib heißt Importbibliothek, die sind z.B. auch nicht zwischen C++ Builder und VC++ kompatibel, zwischen den einzelnen Versionen dieser aber schon.

Die Datei in dem Zipfile von BASSMOD sieht mir schon nach so einer Importbibliothek aus. Ausprobiert habe ich es aber nicht.

Im C++ Builder gibt es ein Tool namens "implib.exe", damit kann man sich eine kompatible Importlib aus der DLL generieren.
Zitat:

Zitat von Mikkey (Beitrag 1232901)
Nachtrag: Es ist lib.exe mit Option /EXTRACT

lib.exe ist das entsprechende Tool in VC++, es läuft auch beim Erstellen einer DLL und erzeugt die .lib.

Zacherl 7. Dez 2013 16:30

AW: C++ .lib Dateien in Delphi verwenden?
 
Zitat:

Zitat von Robotiker (Beitrag 1232930)
Im C++ Builder gibt es ein Tool namens "implib.exe", damit kann man sich eine kompatible Importlib aus der DLL generieren.

Und die kann ich dann auch für statisches Linken im normalen Delphi (nicht C++ Builder) verwenden?

Robotiker 8. Dez 2013 11:31

AW: C++ .lib Dateien in Delphi verwenden?
 
Nein.

Außerdem linkt man mit einer so generierten Importbibliothek ja dynamisch, die ist quasi eine statische Bibliothek mit dem Code zum Laden der DLL.


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