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

VC++ .NET Discussion :

Linker Visual Studio


Sujet :

VC++ .NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Points : 38
    Points
    38
    Par défaut Linker Visual Studio
    Bonjour à tous,

    Je dispose d'une solution Visual Studio (Express), composée de plusieurs projets. J'ai également inclus des librairies additionnelles dans les options de la solution. Par contre, lorsque une ce des librairies (.lib) présente une erreur, lors de la compilation j'ai évidemment une erreur qui apparait, qui indique la ligne et le fichier (.cpp) mis en cause, mais lorsque je double clique pour atteindre ce fichier, il apparait en bas à gauche
    the system can not find the file specified.
    Ce fichier n'est pas inclue dans la solution, puisqu'il appartient à une librairie qui est elle même inclue. Y'a t-il une option qui permettrait d'atteindre les fichiers des librairies afin de pouvoir déboguer plus simplement ?

    Merci,

    Julien.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    Si tu veux de l'aide va falloir détailler, voire mettre le vrai message d'erreur affiché.
    Et dire qui est compilé qui est linké.
    Sinon ca va être compliqué.

    PS : pb C++ dans le forum .NET

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Points : 38
    Points
    38
    Par défaut
    Alors j'ai une solution qui s'appelle Infrastructure qui a pour but de générer un fichier Infrastructure.lib. Ensuite, dans ma solution principale, à savoir la solution LnDM, je dispose d'appels à des fonctions de la librairie Infrastructure.lib.

    Exemple: Dans la solution Infrastructure, je dispose d'un fichier WaitingQueue.cpp, avec entre autres la fonction suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void cWaitingQueue::Peek_Immediate(unsigned int Size, unsigned int WaitTime)
    {
    /* ... */
    }
    puis dans ma solution LnDM, je rajoute la commande pre-event suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    msbuild $(LocalFusionBuilds)\Visual\Infrastructure\Infrastructure.sln /property:Configuration=Debug /property:Platform=Win32
    ainsi que dans les librairies additionnelles la librairie Infrastructure.lib ce qui me permet d'utiliser directement la fonction suivante dans LnDM:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgSize = (p_LnDM->p_MQ.RR_Recv_WQ->Peek_Immediate(4, INFINITE_WAIT));
    Ceci fonctionne correctement. Ensuite, pour tester, j'insère une erreur dans le fichier WaitingQueue.cpp qui est dans la solution Infrastructure, et donc dans la librairie Infrastructure.lib (par exemple, je rajoute un ";" n'importe ou).
    Lors de la compilation de LnDM, qui entraine la compilation d'Infrastructure, il y a bien évidemment une erreur de type "; missing dans le fichier WaitingQueue.cpp" ou autre selon l'erreur que j'ai inséré. Du coup, je voudrais pouvoir, en double cliquant sur cette ligne, être amené directement à l'endroit dans le fichier WaitingQueue.cpp ou l'erreur se trouve. Cependant, il ne trouve pas le fichier WaitingQueue.cpp. Pourquoi ?

    Alors que si je rajoute le fichier WaitingQueue.cpp à ma solution LnDM (ce qui enlève l'intérêt d'Infrastructure.lib), cela fonctionne, VS sait où est le fichier WaitingQueue.cpp

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    Piste (tout sûre du tout) :
    dans ta solution LnDM :
    - clic droit sur la solution -> properties
    - common properties -> debug source files

    essaie d'y mettre le répertoire de WaitingQueue.cpp

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Points : 38
    Points
    38
    Par défaut
    Merci pour la réponse, mais ceci ne marche pas.

    En double cliquant sur l'erreur suivante, il y a toujours le petit message
    The system can not find the file specified
    "

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    9>..\..\..\..\IED\Infrastructure\BasicDataManagement\Src\WaitingQueue.cpp(264): error C2059: syntax error : '}' [Infrastructure.vcxproj]

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Je pense que le problème vient du fait que la ligne de notification d'erreur vient de MSBUILD et donc dans le contexte de la solution "Infrastructure.sln" et non dans le contexte de la solution actuellement dans VS.

    Par contexte je parle du répertoire de la solution VS.

    Je n'ai jamais fait ce genre de gymnastique car MSBUILD n'est pas un moteur de "bat" pour chaînage de compilation. C'est comme utiliser "make" à la place de "sh" sous Unix.

    Pour faire le genre de projet que vous décrivez, il n'est absolument pas nécessaire d'avoir 2 .sln.

    Il suffit d'un sln contenant votre projet de génération de votre lib et le projet de génération de votre application utilisatrice de la lib ainsi que de spécifier dans VS que le second projet dépend du premier.

    Il n'y pas besoin de la moindre "commande pre-event".

    Vous n'aurez qu'un contexte, donc en double cliquant sur la ligne, cela devrait marcher sans problème.

    2 problèmes réglés, la lourdeur d'avoir 2 solutions sln et le double-click power.

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/01/2015, 00h01
  2. News Visual Studio
    Par farscape dans le forum Visual C++
    Réponses: 34
    Dernier message: 27/04/2010, 10h21
  3. [IDE] Visual Studio 2005 Express
    Par Louis-Guillaume Morand dans le forum Général Dotnet
    Réponses: 130
    Dernier message: 23/12/2006, 15h08
  4. Probleme d'utilisation de directX 9 avec visual studio.net
    Par cranedoeuf dans le forum DirectX
    Réponses: 1
    Dernier message: 24/05/2004, 04h33
  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