2013-02-07 4 views
2

J'ai une bibliothèque statique .lib. Je l'ai lié sous les paramètres de lieur "Additional Library Directories" et "dépendances supplémentaires", ainsi que l'utilisation de pragma comment (lib, "mylib").. Et tout cela compile bien. Ce que je demande, et je ne peux que trouver des solutions de liaison quand je regarde, est de savoir comment utiliser réellement les fonctions qui s'y trouvent. Si j'avais une fonction 'MyFunc' référencée dans ma bibliothèque statique, comment pourrais-je l'appeler? Visual Studio ne reconnaît actuellement aucun espace de noms ou fonctions définis dans la bibliothèque.Utilisation d'un fichier .lib dans Visual Studio 2012 (C++)

Merci!

+0

Désolé sur le format bizarre. Je ne sais pas pourquoi il a fait cela – knoxaramav2

+0

Je devine qu'il y a un fichier d'en-tête avec lequel vous devez compiler qui a les définitions de méthode/classe? –

+0

A propos du format - si vous identifiez le texte par quatre espaces, il est analysé comme un bloc de code. Pour les commentaires en ligne, utilisez les caractères. –

Répondre

5

Vous devez obtenir un fichier d'en-tête pour cette bibliothèque, qui est généralement fournie avec la bibliothèque. Après cela, vous devez l'inclure dans votre fichier où vous voulez utiliser des fonctions et appeler des fonctions en utilisant des prototypes déclarés.

Votre compilateur doit connaître les prototypes des fonctions - car il ne peut pas lire/analyser le fichier lib - c'est le travail du lieur.

+1

Doh, c'est ce que je reçois pour ne pas "charger de nouvelles réponses" quand je vois le popup. :) – JerKimball

+0

Hmm, ok. J'ai obtenu le fichier .h du projet et j'utilise le fichier .lib du dossier de publication quand je l'ai compilé. J'ai l'éditeur de liens défini sur le dossier de publication avec le fichier .lib, et le 'include additional directories' sous c/C++ -> general dans le répertoire parent avec 'MyLib.h'. Maintenant, il dit [erreur LNK1104: impossible d'ouvrir le fichier 'MyLib.lib' – knoxaramav2

+0

@JerKimball mais vous perdriez env. 3 secondes pour le chercher, ce qui est très long dans le monde de SO - si je cliquais sur cette case à chaque fois, j'aurais toujours 500 de réputation :). –

2

Si je comprends ce que vous demandez, vous devez déclarer un prototype pour votre fonction que-vie-en-a-lib:

Supposons que votre lib a:

int Foo(int bar) { ... } 

Dans votre "consommateur" où vous pragma votre lib, vous avait besoin de quelque chose qui dit:

extern int Foo(int bar); 

ou même simplement:

int Foo(int bar); 

Habituellement, vous le faites via les fichiers d'en-tête (.h fichiers), et pour les bibliothèques, ils sont généralement appelés « inclure des fichiers »

Questions connexes