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

DirectX Discussion :

directshow bases classes


Sujet :

DirectX

  1. #1
    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 directshow bases classes
    J'ai téléchargé le dernier SDK de directshow (February 2005).

    J'ai compilé les bases classes pour obtenir les deux librairies strmbasd.lib et strmbase.lib. Jusque là pas de problème.

    Lorsque j'utilise la librairie strmbasd.lib (mode debug) pas de problème non plus.

    Le problème c'est lorsque je compile mon application directshow en mode release avec strmbase.lib, j'ai l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    strmbase.lib(dllsetup.obj) : error LNK2019: symbole externe non résolu __imp___vsnprintf référencé dans la fonction "long __stdcall StringVPrintfWorkerA(char *,unsigned int,char const *,char *)" (?StringVPrintfWorkerA@@YGJPADIPBD0@Z)
    strmbase.lib(wxutil.obj) : error LNK2001: symbole externe non résolu __imp___vsnprintf
    J'ai un symbole externe non résolu (__imp___vsnprintf). De quoi se prendre la tête.

    Le truc que je ne pige pas, c'est que cette librairie (strmbase.lib) est compilée en statique..... Donc si elle est compilée en statique, il ne devrait pas y avoir de symbole externe non reconnu.......

    J'aimerais comprendre. Je suis capable de contourner le problème, suffit de virer cette fonction ou de la remplacer (mais ça ne me plait pas surtout pour une version release).

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Le truc que je ne pige pas, c'est que cette librairie (strmbase.lib) est compilée en statique..... Donc si elle est compilée en statique, il ne devrait pas y avoir de symbole externe non reconnu.......
    Oui mais au risque de dire des aneries il y a des références à des objets COM et le mode de fonctionnement n'est pas tout à fait le même qu'une lib C classique.

    J'avais eu des tas de problèmes aussi sur un projet en entreprise avec DShow et strmbase à recompiler.

    Peut-être , je dis bien que peut-être c'est mieux d'utiliser une version de Direct X NON debug mais retail.
    La version debug de Dx c'est une cagade pas possible...

  3. #3
    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
    J'ai comme le sentiment que c'est juste un problème de fichiers d'inclusion.

    Ma programme utilise les versions "multithreadée" des bibliothèques. C'est je pense un bug de directshow. La fonction incriminée se trouve dans un fichier .c et doit être compilé dans une biliothèque de windows non "multithreadée".

    le souci c'est que de nombreux en-tête de directX renomment cette fonction à coup de #define et que c'est le bordel ABSOLU.

    Difficile de savoir si le problème se situe au niveau d'un .h ou d'un .lib avec toutes ces redéfinitions.

    Je ne sais pas trop comment faire. Il n'y a rien sur le net à ce sujet. Je vais essayer de poster chez Microsoft, mais ça à l'air aussi d'être le bordel.

  4. #4
    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
    A la compilation de mon programme j'avais un conflit de bibliothèque entre libcmtd.lib et msvcrtd.lib.

    Pour résoudre ce conflit j'utilisais /NODEFAULTLIB:msvcrtd.lib

    Pas de bol pour moi c'était l'autre librairie qu'il fallait ignorer /NODEFAULTLIB:libcmtd.lib

    La seule différence c'est que libcmtd.lib est une librairie de débogage multithread et que msvcrtd.lib est une librairie de débogage multithread avec dll.

    Je n'utilise pas de dll dans ce programme mais faut croire que oui.

    Voilà, à bientôt pour la prochaine prise de tête...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Base : Classe abstraite et constructeur
    Par zax-tfh dans le forum ASP.NET
    Réponses: 10
    Dernier message: 28/12/2009, 23h57
  2. VS2005, directshow compilation de Bases classes
    Par RB Greg dans le forum DirectX
    Réponses: 3
    Dernier message: 08/11/2006, 20h36
  3. Dynamic_cast & Base class virtuelle
    Par taron dans le forum C++
    Réponses: 5
    Dernier message: 11/02/2006, 20h45

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