IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

STL version __declspec(dllimport) dans VISUAL 2010


Sujet :

C++

  1. #1
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 8
    Par défaut STL version __declspec(dllimport) dans VISUAL 2010
    Bonjour,

    Je développe sous Windows Visual Studio 2010 et je suis en train d'essayer d'ajouter une bibliothèque à un programme console C++ mais les fichiers lib pointe vers une version __declspec(dllimport) de la STL, or mon projet est un simple projet console.
    Voici les premières (j'en ai au moins une centaine) erreurs que j'obtiens.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    libmegamatching.lib(BImage.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,int)" (__imp_?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z)
    libmegamatching.lib(makeCanonicalImage.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,int)" (__imp_?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z)
    M_Control.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,int)" (__imp_?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z)
    J'ai essayé plusieurs trucs comme changer les options dans C/C++ > Code generation > Runtime library mais je n'ai pas réussi à trouver de solution.

    Quelqu'un a une idée des options que je pourrai changer?

    Merci d'avance

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2006
    Messages : 48
    Par défaut
    Bonjour,

    Bonjour,

    Sous Visual Studio 2010, il est impératif d'avoir les mêmes options de compilations pour toutes les lib utilisée ainsi que pour le projet principal.
    Sinon on se retrouve avec ce genre d'erreur d'édition de liens complètement déroutante.

    Si tu ne connais pas les options de compilation utilisée par ta lib, tu peux y aller par essai erreur...
    http://msdn.microsoft.com/en-us/libr...=vs.71%29.aspx

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 636
    Par défaut
    Salut,

    Le fait que l'éditeur de liens se plaigne de ne pas trouver un symbole proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    __declspec(dllimport) public: int __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,int)
    t'indique, simplement, qu'il essaye de faire la liaison avec une bibliothèque qui est fournie sous la forme d'une dll.

    Cela peut, effectivement, arriver parce que les différents projets utilisent différentes options de compilation: libmegamatching.lib peut, par exemple, demander d'utiliser la version dll de la STL, alors que ton projet "final" demande (plus ou moins explicitement) d'utiliser la version statique de la STL.

    Si tu as toi même compilé libmegamatching, essayes de vérifier les options de compilation, aussi bien au niveau de la compilation elle-même qu'au niveau de l'édition de liens, et de rajouter les options qui sont utilisée dans libmegamatching mais manquantes dans ton projet
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 8
    Par défaut
    Oui c'est un peu ce que je suis en train de faire en fait. Je viens de voir que j'arrive à compiler mon projet sous Visual 2005.
    Par contre j'ai vraiment besoin d'utiliser ma bibliothèque sous visual 2010 car j'utilise Qt5. Il y a une solution dans ce cas?

    Edit: Justement je peut pas recompiler libmegamatching. Je vais voir avec mes collègues s'il existe d'autres versions de la bibliothèque.

    Edit2: Après m'être renseigné, il s'agit d'une bibliothèque compilé avec visual 2005. Pour l'intégré dans Visual 2010, pensez vous que je peux la compiler dans une dll avec visual 2005 puis utiliser cette dll avec visual 2010?

  5. #5
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 8
    Par défaut
    Ok donc j'ai résolu mon problème en créant une bibliothèque dll C++ avec Microsoft Visual 2005.
    Pour se faire j'ai fais la manip suivante dans visual 2005:
    New > Project > Win32 Console Application. Ensuite j'ai sélectionné DLL et "Exports Symbols".

    Puis j'ai recréer une nouvelle interface c++ qui appelle ma bibliothèque en question.

    Je peux ainsi utiliser cette bibliothèque dans mon projet Microsoft visual C++ 2010. Par contre, dans ma bibliothèque, je ne peux pas utiliser la STL et doit me contenter de char* etc.

    Par contre je suis vraiment déçu de Microsoft Visual Studio pour le C++, je ne comprend pas pourquoi cet environnement de développement est le plus populaire.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Disons que pour le C++, ça a baissé (les gars de Microsoft avaient tellement de problèmes pour faire marcher l'intellisense, que pour la version 2010 ils ont carrément abandonné!).

    Mais je peux t'assurer qu'il a été le meilleur pendant un moment (à l'époque de Dev-C++, celui-ci n'arrivait pas à la cheville de Visual 2005). Et il possède toujours un excellent debugger.

    PS: Seule l'interface ne doit pas comporter de types STL (ce n'est pas spécifique à Visual, d'ailleurs). L'implémentation peut utiliser autant de string et de vector qu'elle le veut.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Entity data model dans visual 2010
    Par keryss dans le forum Entity Framework
    Réponses: 3
    Dernier message: 23/01/2011, 00h03
  2. F# sera inclus dans Visual Studio 2010
    Par LLB dans le forum F#
    Réponses: 7
    Dernier message: 16/06/2010, 13h43
  3. fsharp web application dans visual studio 2010
    Par aymen.selmi dans le forum Visual Studio
    Réponses: 7
    Dernier message: 09/10/2009, 16h39
  4. Comment utiliser la STL dans visual c++ 6?
    Par thecrax dans le forum MFC
    Réponses: 1
    Dernier message: 23/03/2007, 11h55
  5. Version de Windows dans Visual Studio !!!
    Par Jasmine dans le forum MFC
    Réponses: 3
    Dernier message: 18/03/2004, 17h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo