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 :

probleme de link (error reading instrumentation file .pgd not found) avec Visual studio community 2013


Sujet :

Visual C++

  1. #1
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut probleme de link (error reading instrumentation file .pgd not found) avec Visual studio community 2013
    Bonjour j'essaye de construire un programme win32/Com console avec visual studio community 2013 et j'ai un probleme de linkage :
    error reading instrumentation file, taskchange.pgd not found.
    je suis en release 64 bits.cela viendrait il des entetes pch ou une autre option de mon projet ? ce projet console inclue des librairies win32 et je linke avec les versions static de libc et libc++.

  2. #2
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    je pense que le probleme vient de la rubrique linker/optimisation

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 200
    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 200
    Points : 12 354
    Points
    12 354
    Par défaut
    Vous avez activé l'option d'optimisation par profiling.
    https://msdn.microsoft.com/en-us/lib...v=vs.120).aspx
    Si vous ne savez pas ce que cela fait, ne l'utilisez pas.

  4. #4
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    merci bacelar, mais avec default ou/LTCG j'ai d'autres erreurs de link :
    Nom : snapshot1.png
Affichages : 346
Taille : 173,9 Ko

  5. #5
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    j'ai l'impression qu il a mal pris en compte mon link avec libcmt.lib et libcpmt.lib

  6. #6
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    c'est ce programme d'exemple (le 1er) que j'ai modifié pour arriver à mes fins :
    https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

  7. #7
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    OK c'etais bien cela d'une part j'ai mis le /LTCG et en plus j'avais oublié le /MT comme j'utilise les libc et libc++ statiques...c'est resolu....

  8. #8
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    @Bacelar, en fait mon pb n'est pas completement résolu....peut on changer les settings d'une tache planifiée et notamment put_DisallowStartIfOnBatteries, grace à ITaskSettings ? car mon programme apparement ne semble pas le faire.
    deja je fais cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    std::wstring ws(taskName, SysStringLen(taskName));
    						std::wstring ws2(argv[1]);
     
    						if (ws == ws2)
    						{
    ou taskName est un BSTR et argv[1] un wchar_t * puisque je suis en unicode pour tester si le nom de ma tache correspond à mon argv[1]

    ensuite je recupere le ITaskSettings* de la tache et je fais cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    BSTR etl=NULL;
    HRESULT hr3 = ptsettings->put_ExecutionTimeLimit(etl);
    					HRESULT hr4 = ptsettings->put_DisallowStartIfOnBatteries(VARIANT_FALSE);
    					HRESULT hr5 = ptsettings->put_StopIfGoingOnBatteries(VARIANT_FALSE);
    					HRESULT hr6=ptdef->put_Settings(ptsettings);
    					if (SUCCEEDED(hr3) && SUCCEEDED(hr4) && SUCCEEDED(hr5) && SUCCEEDED(hr6))
    						printf("Tache modifiée avec succes !");
    					ptsettings->Release();
    et j'execute ce programme dans une console en admin et cela me mets tache executée avec succes mais il doit manquer quelquechose car ces options (de ne pas demarrer la tache si sur batterie) sont encore cochees dans le planificateur de tache sur ma tache.....

  9. #9
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    je viens de resoudre le pb pour les deux options de batterie en faisant un ITaskFolder::RegisterTaskDefinition .l'autre option ne fonctionne toujours pas...peut etre qu il n'aime pas le BSTR etl=NULL;

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 588
    Points
    41 588
    Par défaut
    Je pense qu'il faut explicitement sauvegarder tes changements avec ITaskFolder::RegisterTaskDefinition(..., TASK_UPDATE, ...).

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 200
    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 200
    Points : 12 354
    Points
    12 354
    Par défaut
    La documentation indique que NULL est autorisé :
    https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

    Utilisez un débogueur et vérifiez systématiquement les valeurs de retour des fonctions.

  12. #12
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    merci bacelar et medinoc,je vais ressayer demain en passant directement NULL à la fonction (c'est avec mingw64 qu il faut mettre ce que j'avais mis BSTR etl=NULL; je pense car j'avais utilisé cela dans un autre programme win32/COM) mais comme là pour le moment j'essaye avec visual studio.....-en attendant que j'ai fait un .def pour mingw64 pour creer un .a ensuite-

  13. #13
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    j'ai tout essayé BSTR etl=NULL; et aussi en passant NULL et BSTR() à la fonction put_ExecutionTimeLimit, et à chaque fois elle me renvoie S_OK vu le test que je fais mais "arreter la tache si elle s'execute plus de trois jours" est toujours coché dans le planificateur des taches (les deux options de batterie sont bien decochees par contre, donc cela fonctionne pour la batterie)

  14. #14
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    OK ce probleme est resolu la doc de microsoft est à moitié correcte :ils disent de passer NULL à la fonction ou de passer L"PT0S" en fait NULL ne fonctionne pas mais L"PT0S" fonctionne.ce pb là est resolu.
    derniere question: tant que j'utilise visual studio pour cela, j'aimerais savoir si cet executable utilisant des lib win32 et les libc et libc++ linkées statiquement a besoin quand meme des redistribuables microsoft ou d'autres choses pour fonctionner ou s'il peut fonctionner en stand alone ?

  15. #15
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    oui apparemment il fonctionne sur un windows vierge.

  16. #16
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 200
    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 200
    Points : 12 354
    Points
    12 354
    Par défaut
    Ok, la documentation est piégeuse, effectivement.
    NULL=> Valeur par défaut => 3 jours
    infini <= 0 <= L"PT0S"

    les libc et libc++ linkées statiquement a besoin quand meme des redistribuables microsoft ou d'autres choses pour fonctionner ou s'il peut fonctionner en stand alone ?
    oui apparemment il fonctionne sur un windows vierge.
    Un Windows "vierge", cela ne veut rien dire de vraiment concret. (Windows Update, surcouche EOM du constructeur, etc...)

    Le truc du "stand alone", ce n'est qu'un miroir aux alouettes. Vous avez besoin, au minimum, d'un énorme truc qu'on appelle l'OS, et qui change de version plusieurs fois par an.

    Prenez la peine de faire installateur MSI avec ce qui est nécessaire à l'application, c'est vraiment quelques minutes, pas plus.
    Pour les Dll, si votre IDE, ne les gèrent pas correctement dans un projet de déploiement, vous en aurez la liste exhaustive avec dependency walker (http://www.dependencywalker.com/)

  17. #17
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    merci bacelar,j'ai essayé dependencywalker dessus.
    en fait ce programme est ajouté à ceux d'un setup d'une application faite avec Qt et mingw64 (c'est pour cela j'aurais prefere le faire avec mingw64 mais bon pour le moment on utilisera la version visual studio).j'en ai besoin car le programme schtasks de microsotf n'est pas complet et lorsque on cree une tache planifiee avec, elle est cochee pour s'arreter au bout de trois jours et si l'on est sur batterie,ce que je ne veux pas,donc c'est pour cela que j'ai fait ce programme additionnel qui s'execute lors du setup (fait avec inno setup) dans un batch et decoche ces trois options dans la tache planifiée crée....
    Par contre pour le moment ce programme additionnel est construit pour le moment avec le sdk win 7.0A (donc je suppose de windows 7) et idealement comme ces options de tache planifiées sont a partir de windows vista, il aurait fallu le compiler avec le sdk win 6.0 mais j'ai des problemes dans les includes du sdk 6.0....(ca me mets une erreur sur NMHDR dans Prsht.h (l.667)dans le sdk 6.0 et j'avais essayé en incluant dans ce fichier WInUSer.h mais j'ai toujours l'erreur)

  18. #18
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    j'ai trouvé un sdk 6.1 pour vista et 2008 et je vais essayer avec....

  19. #19
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Points : 558
    Points
    558
    Par défaut
    Bon probleme definitivement resolu : en definissant la constante WINVER en plus de WIN32_WINNT et utilisant le sdk windows 6.1 ca build et cela fonctionne sans probleme

  20. #20
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 200
    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 200
    Points : 12 354
    Points
    12 354
    Par défaut
    .j'en ai besoin car le programme schtasks de microsotf n'est pas complet
    Vous êtes sûr que l'option /XML ne permet pas de faire le nécessaire ???
    Mais bon, on a toujours un meilleur contrôle des erreurs en utilisant les API Win32 qu'en gérant les valeurs de retour des exécutables dans un BATCH.

    Il est assez facile et pas trop pénalisant pour un petit utilitaire de ne pas avoir de dépendance vers les Dll du Redistribuable Visual C++. OK.
    Dependency Walker permet de voir si on n'a rien oublié dans les réglages pour supprimer ces dépendances.

    le sdk win 7.0A (donc je suppose de windows 7)
    Un SDK n'est pas associé à un système en particulier !!!
    Effectivement, souvent, lors du la mise sur le marché d'un nouvel OS, un nouvel SDK est publié avec les nouvelles fonctionnalités du dit OS (en plus de toutes les autres fonctionnalités disponibles sur les autres OS).
    MAIS, c'est la nouvelle version du seul et unique SDK, elle "fonctionne" avec tous les OS précédents, AUSSI.

    Vous devez spécifier la plateforme cible de votre programme avec les constantes de compilation WINVER et WIN32_WINNT, quelque-soit le SDK utilisé.

    Les versions suivantes du SDK, en plus d'ajouter les nouvelles fonctionnalités d'un OS ou même d'un Service Pack, corrigent souvent des bugs et autres problèmes.
    Utilisez toujours la dernière version du SDK, en spécifiant les constantes de compilation WINVER et WIN32_WINNT correspondant à votre plateforme cible.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/03/2013, 23h03
  2. Erreur:The input file was not found (jxl.read.biff.BiffException)
    Par impossibeulman dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 05/08/2008, 15h56
  3. Réponses: 2
    Dernier message: 21/03/2007, 16h13
  4. fatal link error avec visual studio 2003
    Par zephe dans le forum MFC
    Réponses: 5
    Dernier message: 26/07/2006, 19h49
  5. probleme de link avec visual studio .net 2003
    Par kamal101 dans le forum MFC
    Réponses: 9
    Dernier message: 28/03/2005, 22h44

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