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 :

pb de link dans Visual C++ avec yes engine


Sujet :

MFC

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 2
    Points
    2
    Par défaut pb de link dans Visual C++ avec yes engine
    Bonjour,

    J'utilise visual c++ 2005 express edition
    Il compile le moteur (apres qqlques changement de rep pour les ExtLibs)
    et je me retrouve avec ceci:
    LINK : fatal error LNK1104: cannot open file 'C:\Documents.obj'
    mais je ne vois pas du tout ce qu'est ce 'documents.obj', il n'est pas non plus dans le rep temp

    merci d'avance pour vos reponses!

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Il s'agit d'un problème dans les options, vraissemblablement un chemin possédant un espace (dans ton cas "C:\Document and settings\...") et non délimité par des guillements.

    Ensuite s'il cherche à coller un .obj derrière, c'est qu'il s'agit probablement d'un chemin présent dans les options de link.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse rapide, c'est quand meme fort qu'un soft de microsoft fasse cette erreur
    Sinon il y a bien ce chemin dans les options générales mais ça doit venir des options du projet (linker), reste que c'est assez obscur pour moi donc si qqun est familier avec le soft...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Bonjour,
    j'avais eu le même soucis, ca vient effectivement des espaces. Tu px tjs copier le dossier dans la racine par exemple, la sa compilera. Sinon si tu vx garder les meme repertoires, c'est dans les proprietes du projet, faut modifier les $solution_dir (en les supprimant des chemins sa devrait fonctionner)

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Pour les chemins, c'est résolu mais j'ai encore un problème (ce serait trop beau ) alors désolé pour ce copier coller barbare mais je ne trouve pas le fautif...

    MSVCRTD.lib(cinitexe.obj) : warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library

    libpng.lib(pngerror.obj) : error LNK2019: unresolved external symbol __iob referenced in function _png_default_error

    libpng.lib(pngrutil.obj) : error LNK2001: unresolved external symbol __iob
    libpng.lib(pngwutil.obj) : error LNK2001: unresolved external symbol __iob
    libtiff.lib(tif_msdos.obj) : error LNK2001: unresolved external symbol __iob

    merci d'avance de votre aide

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Un petit UP, allez il y a forcément quelqu'un pour résolver ce external symbol, pour un yes engine toujours mieux

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Là je ne peux pas t'aider, ça doit être un problème entre Visual C++ 2005 et libtiff / libpng. Il faudrait avoir le retour d'autres utilisateurs de VC++ 2005.

  8. #8
    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,
    je n'ai pas tout relus ,mais MSVCRTD (/MDd) c'est la CRT en debug et le reste du message :
    warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs
    parle de msvcrt.lib qui est la CRT en release(/MD).
    d'ou ma question il n'y a pas un petit melange debug/release avec les differentes lib en jeux et le programme ?


  9. #9
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Le problème c'est que certaines bibliothèques précompilées pour VC++ que j'utilise ne sont fournies qu'en version release, d'où les conflits lorsqu'on compile en debug. Mais cela peut-il provoquer ce genre d'erreur ?

  10. #10
    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'ai eu le meme style de probleme lors de la migration de mes projets vers VC2005
    a part que tout etait ok compil/link et a l'execution en debug il disait qu'il me manquait la dll msvcrt80.dll.
    et qu'il fallait reinstaller l'application ou le module ,je ne rappelle plus du message.
    au final j'ai du reconstruire toutes mes libs en release avec vc2005.
    il peut etre essayer de passer en CRT static au niveau du programme.
    ou tenter d'ignorer msvcrt.lib dans le parametrage du projet.


  11. #11
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    au final j'ai du reconstruire toutes mes libs en release avec vc2005
    Recompiler les bibliothèques externes avec VC++ 2005 pourrait résoudre le problème ? Y a t-il des incompatibilités entre les lib VC 2003 et VC 2005 ?

    il peut etre essayer de passer en CRT static au niveau du programme
    Dur dur, j'utilise des DLLs et il faut absoluement une version partagée de la CRT.

    ou tenter d'ignorer msvcrt.lib dans le parametrage du projet.
    Ca c'est déjà plus facile à tester

    Bref, Jabrul, essaye de compiler en release ou bien d'ignorer msvcrt.lib, et dis nous ce que ça donne

  12. #12
    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
    Citation Envoyé par Loulou24
    Recompiler les bibliothèques externes avec VC++ 2005 pourrait résoudre le problème ? Y a t-il des incompatibilités entre les lib VC 2003 et VC 2005 ?
    c'est une question epineuse ,mais vu que la CRT a ete entierement refaite avec VC2005 en dll multi thread c'est MSVCR80.DLL qui sera utilisée .
    alors je me pose la question de la compatiblité avec les autres libs associées au programme....
    moi dans le doute j'ai pour les libs qui etaient de ma responsabilité procéder à leur reconstruction avec VC 2005.
    http://msdn2.microsoft.com/en-us/library/abx4dbyh.aspx
    Citation Envoyé par msdn
    What problems exist if an application uses both msvcrt.dll and msvcr80.dll?

    If you have a .lib or .obj file that needs to link to msvcrt.lib, then you should not have to recompile it to work with the new msvcrt.lib in Visual C++ 2005. The .lib or .obj file may rely on the sizes, field offsets, or member function names of various CRT classes or variables, and those should all still exist in a compatible way. When you relink against msvcrt.lib, your final EXE and DLL image will now have a dependency on msvcr80.dll instead of msvcrt.dll.

    If you have more than one DLL or EXE, then you may have more than one CRT, whether or not you are using different versions of Visual C++. For example, statically linking the CRT into multiple DLLs can present the same problem. Developers encountering this problem with static CRTs have been instructed to compile with /MD to use the CRT DLL. Now that the CRT DLL has been renamed to msvcr80.dll, applications may have some components linked to msvcrt.dll and others to msvcr80.dll. If your DLLs pass CRT resources across the msvcrt.dll and msvcr80.dll boundary, you will encounter issues with mismatched CRTs and need to recompile your project with Visual C++ 2005.

    If your program is using more than one version of the CRT, some care is needed when passing certain CRT objects (such as file handles, locales and environment variables) across DLL boundaries. For more information on the issues involved and how to resolve them, see Potential Errors Passing CRT Objects Across DLL Boundaries.

  13. #13
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ok c'est bon à savoir, merci.

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je sais plus quelle manip j'ai faite mais le warning ne s'affiche plus.
    Il y a toujours le pb avec les libs de DevIL (j'ai réussi à compiler en l'enlevant du source mais pas d'execution evidemment).
    Apparement il faudrait recompiler DevIL avec VC 2005 mais comment faire?

  15. #15
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Les sources sont dispos sur le site officiel. Par contre il faudra certainement recompiler également les bibliothèques qu'il utilise (libtiff, libpng, libtga, ...) ou bien sûr en trouver des versions pour VC 2005.

Discussions similaires

  1. Problem rencontré avec Les DataSet dans Visual Studio 2005?
    Par mehdi_scofield dans le forum ASP.NET
    Réponses: 0
    Dernier message: 14/11/2008, 11h40
  2. Publier dans visual studio(problème avec powerpack)
    Par sasuke_ochiwa dans le forum Windows Forms
    Réponses: 2
    Dernier message: 28/09/2007, 16h51
  3. Réponses: 1
    Dernier message: 22/08/2007, 15h48
  4. [VBA-E]Excel: RechercheV avec erreur dans visual basic
    Par bonus23 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/03/2007, 14h08
  5. Réponses: 28
    Dernier message: 07/06/2006, 13h30

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