Visual C++ lib in borland Builder Projekt einbinden
-
Hallo Leute!
Ich habe ein Problem beim einbinden einer C++ Library und hoffe Ihr könnt mir helfen.
Ich arbeite mit dem Borland C++ Builder 6.0 und will eine dll einbinden die in Visual C++ erstellt wurde.
Ich besitze die dll, die lib und den header.
Das heisst die lib ist im coff format erstellt und ich möchte sie ins omf format wandeln.
jetzt gibt es ja die borland tools, wie implib, impdef, coff2omf...
mit denen hab ich es schon probiert. das wandeln klappt auch, jedoch wenn ich die lib dann ins programm einbinde, bekomm ich immer denselben fehler.nämlich unresolved symbol in der .obj datei.
das bedeutet ja dass beim linken die Klassen, funktionen nicht gefunden werden, da diese durch das unterschiedliche format unterschiedliche namen haben. ist das soweit richtig?jetzt hab ich gelesen, dass man ein .def file erstellen muss und dann da irgendwas ändern.dann daraus eine neue .lib, doch da die .def bei mir sehr komisch aussieht und wohl fehler enthält, lässt diese sich nicht in ein .lib file wandeln.was muss man hier tun?
Komisch aussehen heisst, zu viele klammeraffen und vor jeder klasse steht _??0Klassenname.
was haben die fragezeichen zu sagen?
Auch hab ich gelesen, dass es wohl ein altes und ein neues coff format gibt.deshalb hab ich auch schon dieses mit link/lib/convert/ file.lib gewandelt. Auch das hat nichts genutzt.
Ich hoffe jemand von euch hat mir einen tip was ich da noch machen kann und bedanke mich schon mal bei demjenigen.es grüsst euch markus
-
Wie es es aussieht, exportiert die Visual C++ DLL komplette Klassen.
Diese DLL ist so im BCB nicht nutzbar.
Du must eine Wrapper DLL in Visual C++ schreiben, die die einzelnen Klassen als
C-Schnittstelle nach aussen liefert bzw. als COM-Objekte.Hier einige Artikel zu diesem Thema :
http://www.bcbdev.com/articles/vcdll.htm
http://www.bcbdev.com/articles/vcdll2.htm
-
Hallo Case!
Vielen Dank für deinen Beitrag. Werd ich mir mal anschauen und hoff dass ich das hinbekomm.
Mfg Markus
-
die lib vom vc ist nicht gleich eine borland lib. im bcb verzeichnis gibt es ein programm das die lib konvertieren kann
-
DreadlockFilbert schrieb:
die lib vom vc ist nicht gleich eine borland lib. im bcb verzeichnis gibt es ein programm das die lib konvertieren kann
genau
der befehl in cmd wäre folgender:coff2omf.exe -lib:ms inputdatei.lib outputdatei.lib
Tim
-
Vielen Dank für eure Beiträge.
die befehle sind mir schon bekannt.Leider hat es mit diesen aber nicht funktioniert.
Jetzt hab ich herausgefunden, dass dieser Befehl nur für Funktionen geht.
Nicht für Klassen, Objekte...
Ein Lösungsansatz ist dann, dass man alle Klassen in eine C-Funktion kapseln muss.
Dann müsste es funktionieren.
Dies ist im Moment die einzige Lösung die mir einfällt.Gruß Markus