web-dev-qa-db-fra.com

De la bibliothèque statique MinGW (.a) à la bibliothèque statique Visual Studio (.lib)

J'essaie d'utiliser xlsLib pour créer des feuilles de calcul Excel à partir d'une application C++.

Le problème est qu'en compilant xlsLib, je donne un fichier .a (une bibliothèque statique GCC, générée par MinGW). Mais, mon application dépend d'une autre API (PhysX) qui se compile uniquement avec Visual Studio.

Ainsi: est-il possible de transformer la bibliothèque statique GCC (xlslib.a) vers un fichier de bibliothèque statique Visual Studio (xlslib.lib)?

43
user254336

Les archives des bibliothèques statiques générées avec MinGW sont généralement compatibles avec le compilateur/éditeur de liens Visual C++. Vous devriez donc pouvoir les utiliser directement en ajoutant .a fichiers pour l'entrée de l'éditeur de liens dans les propriétés de votre projet dans Visual Studio:

  1. Accédez au projet Properties (Alt-F7).
  2. Dans la zone de gauche, ouvrez Configuration Properties->Linker->Input
  3. Ajouter la liste de tous les .a archives que vous devez utiliser
  4. Vous devrez peut-être ajouter également le MinGW libgcc.a bibliothèque

En outre, des problèmes peuvent survenir concernant les bibliothèques d'exécution C mixtes properties of C/C++->Code Generation->Runtime Library, mais cela dépend de la configuration de votre build que vous utilisez avec MinGW. Parfois, il est nécessaire de créer un lien contre libmsvcrt.a de MinGW mais dans de nombreux cas (sinon la plupart), cela pose des problèmes.

Enfin, cette liaison mixte MinGW et Visual C++ fonctionne généralement mais pour les modules C et ne fonctionne pas pour C++, pour autant que je sache.

34
mloskot

mais l'utilisation de .a empêche mon .exe de déboguer "Les informations de débogage sont introuvables". - entropie le 22 mai à 12:27

c'est parce que la bibliothèque .a n'inclut pas les informations de débogage nécessaires au débogage. vous devez dire au compilateur d'ajouter des informations de débogage lors de la compilation si vous souhaitez le déboguer. pour mingw, vous devez ajouter "-g "vers CFLAGS lorsque vous exécutez" make ", comme" make CFLAGS="-g" "

4
gnaggnoyil

Voici deux ressources que j'ai trouvées utiles:

[snip, mauvais lien]

http://old.nabble.com/using-VC%2B%2B-.lib-with-mingw-td23151303.html

Éditer. Je ne trouve pas le lien que je cherchais. En attendant, consultez celui-ci: http://www.willus.com/mingw/yongweiwu_stdcall.html

0
laura