J'essaie de relier le LizardTech GeoExpress DSDK dans ma propre application. J'utilise gcc pour que nous puissions compiler sur des plateformes. Sur Linux et Mac cela fonctionne facilement: ils fournissent une bibliothèque statique (libltidsdk.a
) et des en-têtes et tout ce que nous avons à faire est de les utiliser.Lien vers la DLL MSVC à partir de MinGW
La compilation pour Windows n'est pas si facile. Ils ont construit la bibliothèque en utilisant Microsoft Visual Studio, et nous utilisons MinGW. J'ai lu la FAQ MinGW, et je suis confronté aux problèmes ci-dessous. La bibliothèque est tout en C++, donc ma première question: est-ce possible? Le simple fait de lier la dll comme prévu fournit des erreurs de "référence indéfinie" pour tous les appels C++ (constructeurs, destructeurs, méthodes, etc.).
Basé sur le Wiki MinGW: http://www.mingw.org/wiki/MSVC%5Fand%5FMinGW%5FDLLs je devrais être en mesure d'utiliser l'utilitaire reimp
pour convertir un .lib en quelque chose utilisable. J'ai essayé tous les fichiers .lib fournis par LizardTech, et ils donnent tous "une bibliothèque d'importation invalide ou corrompue". J'ai essayé les versions 0.4 et 0.3 de l'utilitaire reimp. En utilisant la deuxième méthode décrite dans le wiki, j'ai lancé pexport et dlltool sur la DLL pour obtenir une archive .a, mais cela produit les mêmes références indéfinies.
BTW: J'ai lu la discussion ci-dessous. Il a laissé une certaine ambiguïté quant à savoir si cela est possible, et étant donné la page MinGW Wiki, il semble que cela devrait être faisable. Si c'est impossible, c'est tout ce que j'ai besoin de savoir. Si cela peut être fait, j'aimerais savoir comment je peux y arriver.
How to link to VS2008 generated .libs from g++
Merci!
Merci, c'est exactement la confirmation que je cherchais. Ils ont une interface c, et je cherche à l'utiliser, mais c'est beaucoup moins puissant que ce qui est disponible en C++. Je les pousse aussi à sortir pour MinGW. – IndigoFire
Je préfère les versions mingw de, eh bien, tout, car il rend le déploiement très simple lorsque la dépendance c-runtime est le msvcrt.dll universellement disponible, plutôt que les exécutions msvcr70.dll, msvcr71.dll, msvcr80 spécifiques à la version de studio visuel. dll, msvcr90.dll et maintenant msvcr100.dll. –