2010-12-13 57 views
0

J'ai essayé d'obtenir des bibliothèques statiques (.lib fichiers) pour fonctionner dans VS2010, et je l'ai fonctionnant parfaitement dans la configuration de débogage. Lorsque j'essaie de le compiler sous la configuration de version, cependant, j'obtiens l'erreur error C1083: Cannot open include file: 'Library.h': No such file or directory.Bibliothèque C++ ne lient pas dans la configuration de version (VS2010)

Voici le scénario actuel:

  • J'ai un fichier .lib et un fichier .h dans un dossier sur mon bureau appelé Static Library.
  • J'ai la variable d'environnement INCLUDE pointée vers le dossier susmentionné (donc je peux utiliser #include <Library.h>).
  • J'ai la variable d'environnement LIB pointée vers le dossier ci-dessus.
  • J'ai ajouté le fichier .lib en tant que dépendance supplémentaire et défini le répertoire pour les dépendances supplémentaires.

Mon code source du programme de test ressemble à ceci:

#include <iostream> 
#include <Windows.h> 

#include <Library.h> 

int main() 
{ 
    std::cout << Library::GetValue(); // Returns 123. 
    Sleep(10000); 
    return 0; 
} 

Que pouvais-je faire mal?

+1

Avez-vous défini les paramètres et les chemins du compilateur pour la configuration Release? (Notez que vous pouvez définir les paramètres différemment pour différentes configurations.) –

+0

@James On dirait que c'était le problème. Existe-t-il un moyen de lier les deux ensembles de paramètres de configuration, ou devrais-je juste me rappeler de le faire deux fois pour chaque projet? – Maxpm

+1

En haut de la boîte de dialogue de configuration du projet, vous pouvez sélectionner les configurations pour lesquelles vous modifiez les paramètres. Une option est "Toutes les configurations" (ou quelque chose à cet effet). –

Répondre

1

ne suis pas sûr VS2010 ... mais la mise au point et libérer les modes ont probablement différents paramètres de la bibliothèque ...

Vous pouvez informer le compilateur de lier à travers le code en spécifiant le

suivant
#pragma comment(lib, "library.lib") // no ; is needed 

Ce le fera lier à la fois dans le débogage et la publication

+0

En effet, il semble que les paramètres de configuration de débogage et de libération sont indépendants. Aussi, le '# pragma' fonctionne-t-il également dans d'autres compilateurs? – Maxpm

+0

Je crois que oui, je n'ai jamais eu de problème avec ça – oldSkool