*.lib Datei einbinden, KEINE DLL
-
Hi,
ich habe eine Bibliothek (xxx.lib) von einem Fremdhersteller, der ausser der lib Datei und den Headern nichts weiter ausliefert.
Die Funktionalität ist (wie auch immer) in der lib Datei enthalten. Aus den ausgelieferten Dateien schliesse ich, das diese unter VC++ entwickelt wurden, sie sind aber als reines c++ Framework gedacht und sollen unter Windows und unter Linux einsetzbar sein.
Diese Lib kann ich nicht im BCB6 einbinden.Als Fehlermeldung gibt es das obligatorische 'invalid OMF Record (possible COFF)'
COFF2OMF erzeugt mir ohne Fehlermeldung aus meiner 570 kb grossen Quelldatei eine 1 kb kleine *lib, in der dann natürlich nichts mehr drin ist.
Da die Lib für Windows und Linux sein soll, gibt es keine Dll, aus der ich (mittels IMPLIB) eine neue lib Datei erzeugen könnte.
Irgendwie trete ich da momentan auf der Stelle, hat evtl. jemand eine Idee, was ich falsch mache?
-
Hallo
DLL/LIB und Plattformunabhängigkeit schließen sich gegenseitig aus. DLLs und Libs gibts nur unter Windows. Unter Linux gibts es ähnliche, aber nicht gleiche Typen (.s und .so, wenn ich mich richtig erinnere).
Fakt ist : ohne die Quellcode-Datein, also .h und .cpp, kannst du kein plattformunabhängiges Programm schreiben, denn unter Linux must du alles neu kompilieren, bzw. du must entsprechend vorbereite kompilierte Librarys für den Fremdcode haben.
bis bald
akari
-
@ akari:
so hatte ich das auch in Erinnerung, aber hier mal ein Ausschnitt aus der Dok des Herstellers:The high level XXX-interface is a flexible C++-interface framework, ...
The interface was designed to be both, simple to use and at the same time to be as flexible as possible for advanced uses. Therefore, LibXXX provides simple to use C++-methods for all basic operations, that take essential parameters as method parameters and that optionally allow to pass extended parameter sets by means of a tag interface. As far as possible parameters already have predefined default values to further simplify usage.
LibXXX was designed to be platform independent and can be provided for both Windows and Linux.
-
Hallo
Der Text an sich ist nicht falsch, macht aber nicht deutlich das nur das Interface an sich plattformunabhängig sein kann. Jedes Compilieren macht aber per Definition plattformabhängigen Objektcode draus.
Desweiteren können grade die kompilierten Ergebnisse einer C++ (also mehr als nur C) Bibliotheken niemals plattformunabhängig sein. Es ist ja nicht mal möglich eine C++ Library mit dem Builder zu kompilieren und dann fehlerfrei zum Beispiel mit dem MS Visual Studio zu benutzen.
bis bald
akari
-
Alles klar,
ich installier mir ein VC++ und versuche, die statische *.lib, die mir geliefert wurde, in einer 'echten' Dll zu wrappen