Ich versuche, die LizardTech GeoExpress DSDK in meine eigene Anwendung zu verknüpfen. Ich benutze gcc, damit wir für Plattformen kompilieren können. Auf Linux und Mac funktioniert das problemlos: Sie stellen eine statische Bibliothek (libltidsdk.a
) und Header zur Verfügung und alles, was wir tun müssen, ist sie zu verwenden.Verknüpfung mit MSVC DLL von MinGW
Kompilieren für Windows ist nicht so einfach. Sie haben die Bibliothek mit Microsoft Visual Studio erstellt, und wir verwenden MinGW. Ich habe die MinGW-FAQ gelesen und stoße auf die folgenden Probleme. Die Bibliothek ist alles C++, also meine erste Frage: Ist das überhaupt möglich?
Durch einfaches Binden gegen die DLL erhalten Sie "undefined reference" -Fehler für alle C++ - Aufrufe (Konstruktoren, Destruktoren, Methoden usw.).
Basierend auf dem MinGW Wiki: http://www.mingw.org/wiki/MSVC%5Fand%5FMinGW%5FDLLs Ich soll das Dienstprogramm verwenden reimp
kann nutzbar eine LIB in etwas zu konvertieren. Ich habe alle .lib-Dateien ausprobiert, die von LizardTech bereitgestellt werden, und alle geben "ungültige oder beschädigte Importbibliothek" an. Ich habe sowohl Version 0.4 und 0.3 des Reim-Utility ausprobiert.
Mit der zweiten im Wiki beschriebenen Methode habe ich pexport und dlltool über die DLL laufen lassen, um ein .a-Archiv zu erhalten, aber das erzeugt die gleichen undefinierten Referenzen.
BTW: Ich habe die Diskussion unten gelesen. Es ist unklar, ob dies möglich ist, und angesichts der MinGW-Wiki-Seite scheint dies machbar zu sein. Wenn es unmöglich ist, ist das alles, was ich wissen muss. Wenn es möglich ist, würde ich gerne wissen, wie ich das erreichen kann.
How to link to VS2008 generated .libs from g++
Dank!
Danke, das ist genau die Bestätigung, die ich gesucht habe. Sie haben eine c-Schnittstelle, und ich benutze das, aber es ist viel weniger leistungsfähig als das, was in C++ verfügbar ist. Ich dränge sie auch, um für MinGW freizugeben. – IndigoFire
Ich bevorzuge Mingw Releases von, nun, alles, wie es die Bereitstellung wirklich einfach macht, wenn die C-Laufzeit-Abhängigkeit ist die universell verfügbare msvcrt.dll, anstatt die Visual Studio-Version Laufzeiten msvcr70.dll, msvcr71.dll, msvcr80. dll, msvcr90.dll und jetzt msvcr100.dll. –