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

C++ Discussion :

pb sous visual c++ 5 express et win32 dll


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Par défaut pb sous visual c++ 5 express et win32 dll
    Bonjour,
    je suis nouveau sur ce forum, et pour me présenter succintement je dirais que je viens vers le C++ (après avoir fait du C il y a bien longtemps) pour développer des plugins pour le logiciel de 3D Maya.
    J'ai installé la version de Visual C++ 5 express édition ainsi que le SDK server 2003 full R2. J'ai suivi le tutoriel sur ce site "Démarrer avec Visual C++ 2005 express" - "Création et compilation d'un projet C/C++" et tout fonctionne à merveille.
    Là où ça commence à ne plus aller c'est quand je veux tester un pauvre "hello world" façon plugin pour maya. En utilisant un wizard de maya j'ai beaucoup d'erreurs à l'édition de liens "LNK2019".
    Et sans utiliser de wizard, ce qui me plairait plus, j'ai suivi des instructions sur un forum spécialisé maya sur lequel il est indiqué de créér un projet de type win32 option DLL...mais je ne peux pas car l'option DLL est grisée.
    Est-ce une limitation de la version express? Est-ce dû au fait que je sois sur XP64?
    Voili voilo, si quelqu'un a une piste...
    Merci en tout cas d'avoir pris le temps de me lire.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Hum...
    Si je me souviens bien, il y a une limitation en effet sur la versions Express. Je crois que le mieux est de créer un projet Win32 Console vide, et changer deux options:
    • Le type de projet dans les propriétés générales du projet,
    • Le subsystem dans les propriétés du Linker (/SUBSYSTEM:Windows)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Par défaut
    Merci pour cette réponse, qui "colle" bien à mon problème. J'ai appliqué vos conseils et cela va dans le bon sens, mais il me reste à surmonter un petit souci apparemment : je suis sous xp64, et pour cette version il manque mfc80.lib! Tout désapointé que je suis... C'est la dernière erreur annoncée par le compilateur de VS express, avant de pouvoir commencer à tester la réalisation de plugins pour maya.
    Ce qui est vraiment déroutant c'est de ne pas avoir de vue claire sur tous les fichiers nécessaires pour commencer... Peut-être y-a-t-il un schéma sur le site?
    Merci en tout cas pour votre aide.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Essaie de changer les réglages pour ne PAS utiliser MFC dans ton projet.
    MFC n'est pas fourni avec la version Express de Visual 2005 (eh oui, MFC c'est payant).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Par défaut
    et bien oui mais comme je le disais, je ne sais même pas ce qu'est MFC... Au flan : Microsoft File Components?

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Non, ce sont les Microsoft Foundation Classes, une bibliothèque de classes C++ utiles notamment pour faire des programmes avec interface graphique.
    WordPad par exemple, est un programme fait en utilisant MFC.

    Le fait d'utiliser MFC ou non se règle dans les propriétés du projet:
    "Project Properties" -> "Configuration Properties" -> "General" -> Champ "Use of MFC" -> Régler à "Use standard Windows libraries".
    Et en profiter aussi pour s'assurer que "Use of ATL" est réglé sur "Not using ATL" (ATL est également une bibliothèque payante de Microsoft, qui n'a rien à voir avec la STL qui est standard).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Par défaut
    Glups, j'ai bien les deux champs indiqués aux valeurs que tu me recommandes...
    Et j'ai toujours cette erreur :
    LNK1104: cannot open file 'mfc80.lib'

    Voici le code qui est tout simple manifestement, c'est juste pour tester le pipe entre visual et maya, MGlobal faisant référence à une bibliothèque API de maya. Comme ces plugins ont pour vocation d'être distribués sur toutes plateformes, je serais étonné que les bibliothèques maya (MGlobal...) fasse appel à ces MFC oua utres bib propriétaires.
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    //
    // Copyright (C) toto
    // 
    // File: myCmdCmd.cpp
    //
    // MEL Command: myCmd
    //
    // Author: Maya Plug-in Wizard 2.0
    //
     
    // Includes everything needed to register a simple MEL command with Maya.
    // 
    #include <maya/MSimple.h>
    #include <maya/MFnPlugin.h>
    #include <maya/MGlobal.h>
    #include<maya/MLibrary.h>
     
     
      // required to link the libraries under VisualC++ / Win32
      #ifdef WIN32
    	#pragma comment(lib,"Foundation.lib")
    	#pragma comment(lib,"OpenMaya.lib")
    	#pragma comment(lib,"OpenMayaAnim.lib")
    	#pragma comment(lib,"OpenMayaUI.lib")
    	#pragma comment(lib,"OpenGL32.lib")
      #endif
     
      // under WIN32 we have to 'export' these functions so that they are visible
      // inside the dll. If maya can't see the functions, it can't load the plugin!
      #ifdef WIN32
    		#define MLL_EXPORT __declspec(dllexport)
    #else
    		#define MLL_EXPORT
      #endif
     
    //DeclareSimpleCommand( myCmd, "toto", "8.5");
     
    int main(int argc,char** argv)
    {
     
    MGlobal::displayInfo( "test hello" ); 
    return 0;
    }

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Qu'est-ce que Foundation.lib ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Par défaut
    je n'en sais rien c'est ce que j'ai trouvé sur un tuto spécifique pour plugins maya. J'imagine que ce sont des bib utiles à développer pour l'api de maya...
    Quoiqu'il en soit j'ai la même erreur en compilant uniquement cette portion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Includes everything needed to register a simple MEL command with Maya.
    #include <maya/MSimple.h>
    #include <maya/MFnPlugin.h>
    #include <maya/MGlobal.h>
    #include<maya/MLibrary.h>
     
    int main(int argc,char** argv)
    {
     
    MGlobal::displayInfo( "test hello" ); 
    return 0;
    }
    Si je tire des conclusions de ce petit bout de code, cela ne pourrait être que MGlobal qui ferait appel à mfc80.lib, ou me trompe-je?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Par défaut
    en fait j'ai testé en enlevant les lignes
    MGlobal...
    return...
    et...pareil! erreur mfc80.lib

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Donc, tu veux dire que sans aucun include ni utilisation des libs maya ni foundation, avec MFC désactivé dans les réglages, le projet cherche encore MFC ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <maya/MSimple.h>
    #include <maya/MFnPlugin.h>
    #include <maya/MGlobal.h>
    #include<maya/MLibrary.h>
     
    int main(int argc,char** argv)
    {
     
    }
    en compilant ça j'ai toujours l'erreur. Et j'ai :
    conf type : Dynamic Library (.dll)
    use of mfc : Use Standard Windows Libraries
    atl : not use of atl

    Bizarre n'est-ce pas?

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Pareil si tu vires aussi les includes ?
    (les includes peuvent contenir des instructions spécifiques à Visual pour dire d'utiliser une bibliothèque).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Par défaut
    itou si j'enlève :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //#include <maya/MSimple.h>
    //#include <maya/MFnPlugin.h>
    //#include <maya/MGlobal.h>
    j'ai toujours le pb avec mfc80.lib
     
    Si j'enlève aussi 
    //#include<maya/MLibrary.h>
    j'ai alors :
    1
    >LINK : error LNK2001: unresolved external symbol initializePlugin
    1>LINK : error LNK2001: unresolved external symbol uninitializePlugin

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Ben je ne vois pas, alors...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Mai 2005
    Messages : 92
    Par défaut
    Il n'y a pas un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #pragma comment(lib, "mfc80.lib")
    dans MLibrary.h?

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Par défaut
    J'ai mis un post sur un site spécialisé CGSociety. En espérant qu'ils connaissent ce pb
    Merci de ton aide en tout cas, ça m'a déjà fait avancer dans VS express.

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Par défaut
    Citation Envoyé par Biozic Voir le message
    Il n'y a pas un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #pragma comment(lib, "mfc80.lib")
    dans MLibrary.h?
    bingo!
    Il y a bien ectte directive. Si je la commente, je n'ai plus l'erreur de départ mais j'en ai plein d'autres... du style :

    1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
    1>libcpmtd.lib(xdebug.obj) : error LNK2019: unresolved external symbol __malloc_dbg referenced in function "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z)
    1>libcpmtd.lib(xdebug.obj) : error LNK2019: unresolved external symbol __free_dbg referenced in function "void __cdecl operator delete(void *,struct std::_DebugHeapTag_t const &,char *,int)" (??3@YAXPAXABU_DebugHeapTag_t@std@@PADH@Z)

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Cherche dans les propriétés du projet "C Run-Time Library" et règle sur "Multithreaded DLL" ou "Multithreaded Debug DLL"...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  20. #20
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Par défaut
    Bonjour.

    Citation Envoyé par mayadev Voir le message
    ...
    Et sans utiliser de wizard, ce qui me plairait plus, j'ai suivi des instructions sur un forum spécialisé maya sur lequel il est indiqué de créér un projet de type win32 option DLL...mais je ne peux pas car l'option DLL est grisée.
    ...
    Par défaut, les projets win32 et dll sont grisés. Microsoft a donné la solution pour dégriser le tout:

    Aller dans le répertoire "C:\Program Files\Microsoft Visual Studio 8\VC\VCWizards\AppWiz\Generic\Application\html\1036\"

    il y a un fichier "AppSettings.htm".

    Ouvrir ce fichier en mode texte, Puis modifier les lignes de codes suivantes:

    if (window.external.FindSymbol("IS_EXPRESS_SKU"))
    {
    SUPPORT_ATL.disabled = true;
    support_atl_title.disabled = true;
    SUPPORT_MFC.disabled = true;
    support_mfc_title.disabled = true;
    WIN_APP.disabled = true;
    WIN_APP_LABEL.disabled = true;
    DLL_APP.disabled = true;
    DLL_APP_LABEL.disabled = true;
    }

    par:

    if (window.external.FindSymbol("IS_EXPRESS_SKU"))
    {
    SUPPORT_ATL.disabled = true;
    support_atl_title.disabled = true;
    SUPPORT_MFC.disabled = true;
    support_mfc_title.disabled = true;
    //WIN_APP.disabled = true;
    //WIN_APP_LABEL.disabled = true;
    //DLL_APP.disabled = true;
    //DLL_APP_LABEL.disabled = true;
    }

    A mon avis ce n'est pas la peine d'essayer d'activer le support d'atl et de mfc car les sources et les librairies ne sont pas fournit. (Encore que pour ATL il semble que si).



    Citation Envoyé par mayadev Voir le message

    pour cette version il manque mfc80.lib!
    Si le plugging Maya utilise des librairies de la MFC. Tu dois acheter Visual Studio...

    Avec Vc++ express, pas de prise en charge des MFC.

    Par contre, en créant un projet win32 pur avec les indications ci-dessus, tu n'auras peut-être plus ces soucis de mfc80.lib.

Discussions similaires

  1. System.Data.Linq.Mapping sous Visual C# 2008 Express ?
    Par Papy214 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 26/02/2008, 10h23
  2. application sous Visual basic 2005 express
    Par elmo93 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 29/01/2008, 09h55
  3. Debutant besoin d'aide sous visual cpp 2005 express
    Par Jhulk dans le forum Débuter
    Réponses: 2
    Dernier message: 19/10/2007, 23h10
  4. GetPixel sous Visual C++ 2005 Express
    Par Iznogoodsnow dans le forum Visual C++
    Réponses: 7
    Dernier message: 30/11/2006, 09h25
  5. Erreurs de links sous Visual C++ 2005 Express
    Par Spartan03 dans le forum wxWidgets
    Réponses: 6
    Dernier message: 13/11/2006, 18h27

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