Question

J'ai un petit problème: je dois ouvrir un fichier de liaison qui a l'extension de .a. J'utilise Dev-C ++.

Était-ce utile?

La solution

Les fichiers .a sont des archives ar (quelque chose comme des archives zip) de fichiers objet (.o). Vous pouvez lister les fichiers dans le fichier .a en utilisant le programme ar:

ar t file.a

et extraire tous les fichiers:

ar x file.a

Autres conseils

Les fichiers avec l'extension .a sont des bibliothèques statiques à l'aide des conventions de nommage des fichiers Unix. Ils ne sont pas beaucoup plus qu'une collection indexée de code objet. Vous ne pas tant de les ouvrir (sauf si vous avez un outil comme nm ou gdb disponibles, toutes deux peut faire des choses sensibles avec une bibliothèque sinon nécessairement ce que vous voudrez peut-être) que dire éditeur de liens pour les utiliser lors de la liaison. Avec la plupart des linkers, il est important de mettre toutes les bibliothèques (à la fois statiques et dynamiques / partagés) après votre principal code de programme sur la ligne de commande de liaison et l'ordre des bibliothèques est également important.

Avez-vous vraiment dire que vous voulez open le fichier, ou plutôt que vous souhaitez lien avec votre code?

Dev-C ++ par défaut est installé avec le compilateur MinGW / GCC. Si l'archive ne se construit pas spécifiquement pour fonctionner avec MinGW (par exemple, il peut être une archive Cygwin ou Linux), vous ne serez pas en mesure de le relier au code généré MinGW.

Si l'archive est une bibliothèque compatible MinGW / GCC, vous lien simplement à votre code. Dans Dev-C ++, vous devez ajouter l'archive aux options de l'éditeur de liens de projet, soit en ajoutant le chemin complet vers l'archive (il y a un bouton pour que, dans les options du projet), ou en plaçant l'archive dans un chemin défini par une option -L<path> , puis en ajoutant une option -l<archive>. Notez que identifiant l'archive est appelée libXXX.a, l'option de -l<archive> sera `-lxxx '; le préfixe "lib" et ".a" extension sont implicites.

Si vous voulez simplement d'inspecter une archive pour déterminer quels symboles externes il fournit, le nm utilitaire peut être utilisé pour cela. Si vous souhaitez extraire les fichiers objets individuels, puis utilisez le ar , bien que je ne peux pas penser à une bonne raison pour laquelle vous voulez faire non plus.

fstream ou fstream file_op("c:\\test.a",ios::in);, et ne pas oublier d'inclure fstream.h .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top