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

MFC Discussion :

Comment Integré une lib avec VS2005?


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut Comment Integré une lib avec VS2005?
    Bonjour,
    Je vien de faire une bibliotheque de classe.
    JE l'ai compilé pour generer un .lib
    Mais je n'arrive pas a l'ajouter a ma nouvelle application :S
    J'ai pourtant rajouter le .h dans mon projet et au niveau du link il me demande ou est la fonction que j'ai declarer dans mon .h
    elle est dans ma LIB pardis !!!!
    mais il la trouve pas.
    j'utilise VS 2005 : pouvez vous me dire comment faire ?
    Merci d'avance

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    Dans les options de ton projet->Linker->Input:Additional dependencies

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Clic droit sur ton projet. Puis properties. Dans l'arbre à gauche tu as linker/général. Puis tu vois apparaître à droite dans un tableau "Additionnal library directories"

    N'ayant pas testé parce que j'ai rarement utilisé cet éditeur. cela peut être une piste...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    Je vous remercie mais c'est ce que j'avai deja fait :/
    Et il ne la trouve pas ...
    du coup je me demande si l'en-tête correspondant au lib doit etre specifique?
    Est-ce que le header est le même que celui que j'ai compilé pour faire ma lib ?
    dois-je rajouté quelque chose de special dans mon header ou dans ma lib pour que ce soit accessible ?

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    le message d'erreur est a la compilation ou au à l'edition des liens (link) ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    Edition des lien seuleument (link)
    toutes les fonction declarer dans mon point H sont "unresolved token" en gros il marque ça quand c'est declarer mais pas definit ^^

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    tu as simplement omis de rajouter le .lib a ton projet en rajoutant
    #pragma comment(lib, "malib.lib")
    dans ton code .

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    je vien de tester et ça ne change rien : j'ai toujours la même erreur lors du link :'(
    pourtant lorsque je genere un DLL avec le même code cela tourne comme sur des roulette mais en lib : c pas aussi simple on dirait ...
    pouvez vous me dire si le .h doit être différent que celui compilé dans la lib?

  9. #9
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    les fonctions de ta lib sont en c ou en C++ ?:
    tu n'as pasoublié les décorations extern "C" ?


  10. #10
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    Le .h intervient à la compilation, pas à l'édition de liens. Soit tu n'as pas ajouté le bon .lib, soit ton .lib ne contient pas l'implémentation de tes types / fonctions. A moins que ce soit un pblm de CRT
    Peux-tu donner un exemple d'erreur ?

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    ce n'est que du c++.net m'enfin ça reste du c++ : la n'est pas la probleme sa poserai des probleme si c'etait du C
    Je vai vous expliquez concretement ce que j'ai fait :
    je cree un nouveau projet du type : bibliothèque de classe
    Je crée 2 classe dans maLib.h
    je les definit dans mon cpp : je compile en generant MaLib.lib.
    Jusque là tout marche !
    Ensuite je dans mon 2eme projet ou je veux utiliser ma lib
    je copie maLib.h (sans rien modifier) et je rajoute le dossier ou MaLib.lib est installé. ensuite je rajoute #pragma comment(lib,"MaLib.lib") dans mon header de mon main de mon projet.
    et les erreur sont les suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Linking...
    Generating code
    Finished generating code
    Anachadec.obj : error LNK2020: unresolved token (06000032) CDBLib.CDB::.ctor
    Anachadec.obj : error LNK2020: unresolved token (06000033) CDBLib.CDB::Lire
    Anachadec.obj : error LNK2020: unresolved token (06000034) CDBLib.CDB::Charge
    Anachadec.obj : error LNK2020: unresolved token (06000035) CDBLib.CDB::Decharge
    Anachadec.obj : error LNK2020: unresolved token (06000036) CDBLib.CDB::Start
    Anachadec.obj : error LNK2020: unresolved token (06000037) CDBLib.CDB::Stop
    Anachadec.obj : error LNK2020: unresolved token (06000038) CDBLib.CDB::~CDB
    Anachadec.obj : error LNK2020: unresolved token (06000039) CDBLib.CDB::CheckSum
    Anachadec.obj : error LNK2020: unresolved token (0600003A) CDBLib.CDB::ConvTo2Bytes
    Anachadec.obj : error LNK2020: unresolved token (0600003B) CDBLib.CDB::ArrayToStr
    Anachadec.obj : error LNK2020: unresolved token (0600003E) CDBLib.CDBException::.ctor
    Anachadec.obj : error LNK2020: unresolved token (0600003F) CDBLib.CDBException::GetUserMsg
    Anachadec.obj : error LNK2020: unresolved token (06000040) CDBLib.CDBException::GetInfo
    C:\PROG\C++\Appli_Finale\Anachadec\Debug\Anachadec.exe : fatal error LNK1120: 13 unresolved externals

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    UP>
    Ma question est simple comment faire un .h d'une lib ?
    Me dites pas que vous savez pas ?

  13. #13
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    j'utilise pleins de libs sur vc2005 avec mes projets et je n'ai pas de problemes.
    Le même .h pour ta classe peut être utilisé pour ta lib et ton projet.

    Tu es sur du chemin de ta lib dans ton projet ?
    Tu n'as pas changé les conventions d'appels ? (par défaut __cdecl )
    On parle bien de bibliothèque (.lib uniquement) pas de DLL ?

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    oui je parle bien de LIB et non pas de dll;
    quand a __cdecl
    je ne le met aps devant les fonction etant donné que je fait du .net
    quelle autre difference existe t-il avec des classe normales ?
    voila en gros a quoi ressemble mon .h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    namespace CDBLib {
     
    	public ref class CDB
    	{
    	public:
                 bool mafonction(int param);
                 etc .....
             }
             public ref class CDBException : public Exception
             {etc .....
              }
    }

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    et donc je voulais savoir si c'etait suffisant comme .h pour definir les protoype de mes foonction dans ma lib ou si il fallat rajouter une instruction special ?

  16. #16
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    C'est pas du C++ standard, mais du C++/CLI, du .Net quoi. Y'a pas de .lib en .Net, mais des assembly. Faut ajouter l'assembly obtenues à la liste des références du projet.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    merci beaucoup je vai voir ça tout de suite
    EDIT : euh c'est quoi le fichier d'assembly ?
    car en reference je peu importer que des .dll , .tlb , .olb , .ocx , .exe
    et j'ai vu un fichier assembly.obj mais je pense pas que ce soit ça ...
    Alors comment on fait pour generé le fichier d'assembly ?
    Merci

  18. #18
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    c'est le .exe ou le .dll, sauf qu'on appelle ça une assembly .Net, parce que ce sont pas des exe/dll classiques, mais... des assemblies .Net

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    dit moi si je me trompe mais losrque je fais une reference a une dll genrer je dois obligatoirement avoir la DLL dans mon dossier de lancement de mon projet ? il n'y a donc pas de link ? je veux faire un lib static ^^ pas une dynamique : c'est juste pour faire de la reutilisation de code
    a moins que comme tu dis il y a une option a appliquer pour que la dll soit lier statiquement mais tous mes essai avec la dll sont dynamique (en gros j'ai besoin de la dll a l'execution de mon prog) et c'est aps ce que je veux :/

  20. #20
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 683
    Points
    10 683
    Billets dans le blog
    3
    Par défaut
    Tu développes en .Net. A la limite, le forum C# serait + adapté. Y'a pas de lib statique, la dll (assembly) n'est pas liée statiquement, tout est différent : c'est le monde .Net.
    Ton code va être compilé en une assembly qui pourra être utilisée en C++/CLI, C#, VB.Net ,etc...
    Au cas où tu ne le saurais pas, ton "petit" exe C++/CLI a besoin du framework 2.0 pour fonctionner:
    http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5
    Un installeur de 22 Mo à livrer avec ton exe. Donc ta petite dll en plus ou en moins...
    http://arb.developpez.com/vc++/expre...sentation-vcpp

Discussions similaires

  1. [VS2005] comment organiser une solution avec plusieurs classes
    Par mahboub dans le forum Visual Studio
    Réponses: 1
    Dernier message: 15/04/2008, 10h49
  2. Réponses: 9
    Dernier message: 17/09/2007, 10h03
  3. Comment integrer un logiciel avec une application
    Par Hamza dans le forum Delphi
    Réponses: 2
    Dernier message: 29/07/2007, 13h21
  4. Comment faire pour integrer une lib externe
    Par X-plode dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 25/04/2007, 15h54
  5. [VS2005] Comment ajouter une solution avec VS2005
    Par Khrysby dans le forum Visual Studio
    Réponses: 1
    Dernier message: 24/10/2006, 03h34

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