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

Visual C++ Discussion :

Pourquoi ne me g�n�re-t-il pas le .lib?


Sujet :

Visual C++

  1. #1
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut Pourquoi ne me g�n�re-t-il pas le .lib?
    Bonjour � tous,

    En pr�s de 10 ans d'utilisation de VS, c'est la premi�re fois que je vois cela, et vraiment �a me d�passe:
    Dans une solution, j'ai 2 projets. Le premier est compil� en tant que dll qui va �tre utilis�e par le second. Normalement, et jusqu'� hier, lorsque je compilais le premier, il me g�n�rait un .dll et un .lib. J'ai d� modifier quelque chose (bien que je ne crois pas avoir modifi� quoi que ce soit mais je ne crois plus au code qui se modifie tout seul), et maintenant il ne me g�n�re que la dll. Or le second projet a besoin du .lib pour linker.

    J'ai fais mille fois le tour de mes options de compilation, et tout me semble nickel. Par exemple, dans linker -> avanced -> import lib, j'ai m�me mis le chemin en dur (c:/path/sans/espaces/malib.lib).

    Avez vous une id�e, un indice, sur ce qu'il peut se passer?

    edit: il s'agit de visual 9 (ou visual 2008) pro SP1, sous windows XP

  2. #2
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut
    Aucune id�e, juste des pistes.
    Regarde mon sujet "runtime error avant main" d'il y a quelques jours dans ce m�me forum.
    Un coll�gue a eu une blague du genre quelques semaines plus t�t (voir KB971090).

    En bref, MS fait des patchs parfois d�routants.
    Essaie en faisant un "rebuild all", en effa�ant tous les r�pertoires release et debug, etc. Bien que je suppose que tu aies d�j� essay� tout cela.

  3. #3
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Salut,
    Le seul cas dont je me souvienne est la cr�ation d'une DLL dans laquelle aucun symbole n'�tait export� : ni fonction, ni classe. Alors, la DLL est bien cr��e mais pas de .lib.

  4. #4
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    r���, j'ai trouv� le probl�me. En r�cup�rant une ancienne version et en comparant les options de compilations, et le probl�me venait d'une variable de pr�compilation que j'avais enlev�. Je l'avais enlev� car je ne savais pas � quoi elle servait (et je ne le sais toujours pas d'ailleurs, je vais chercher �a tout de suite). La variable est de cette forme: __EXPORT_MON_PROJET_DLL__
    Et effectivement, si cette variable n'est pas d�finie, le .lib n'est pas g�n�r�. Je ne sais pas d'o� vient cette variable (c'est un projet que j'ai r�cup�r� "en route"), et elle n'est utilis�e nulle part dans le code.
    C'est ce qui m'ennuie un peu parfois dans Visual, il fait trop de choses "dans notre dos".

  5. #5
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Je pense que c'est ce que je disais : tu n'avais aucun symbole export�. La macro __EXPORT_MON_PROJET_DLL__ est souvent employ�e pour diff�rencier le header selon qu'on g�n�re la DLL ou qu'on importe l'interface de la DLL dans un projet. C'est en g�n�ral quelque chose qui ressemble �
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    #ifdef EXPORTER
    #define __EXPORT_MON_PROJET_DLL__ __declspec(dllexport)
    #else
    #define __EXPORT_MON_PROJET_DLL__ __declspec(dllimport)
    #endif
    et ensuite :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    class __EXPORT_MON_PROJET_DLL__ blabla{
    // ...
    };
    __EXPORT_MON_PROJET_DLL__ void __cdecl re_blablabla();
    La d�finition des macros de type __EXPORT_MON_PROJET_DLL__ peut plus ou moins varier selon les configurations g�r�es ou les compilateurs pris en compte, mais on retrouve toujours au - une d�finition avec dllexport et une avec dllimport pour visual.

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Par d�faut, cette d�finition de pr�processeur s'appelle <NOMDUPROJET>_EXPORTS, et la macro d'exportation / importation � ins�rer dans le code s'appelle <NOMDUPROJET>_API. Par habitude, je ne change jamais ces noms par d�faut de fa�on � garder une coh�rence g�n�rale entre mes projets.

    Si la macro est absente, �a ne produit en g�n�ral que des emm.... : soit tu ne g�n�res que la DLL (avec une erreur de link derri�re), soit que la librairie d'importation (avec une belle erreur � l'ex�cution bien s�r).
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [ADO.Net][OleDb] Pourquoi ma requ�te access ne fonctionne pas?
    Par Bapt.ice dans le forum Acc�s aux donn�es
    R�ponses: 6
    Dernier message: 05/05/2006, 17h19
  2. Pourquoi n'y à t'il pas de rubrique Windev sur www.developpez.com ?
    Par TicTacToe dans le forum Evolutions du club
    R�ponses: 12
    Dernier message: 21/04/2006, 17h44
  3. Pourquoi rand()%N n'est il pas �quiprobable?
    Par Pragmateek dans le forum C++
    R�ponses: 12
    Dernier message: 22/03/2006, 23h37
  4. R�ponses: 2
    Dernier message: 16/11/2005, 04h16

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