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++Builder Discussion :

Probleme de link sur #define GUID


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juin 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 3
    Par défaut Probleme de link sur #define GUID
    Bonjour tout le monde,

    je développe une appli sous Builder2010 en c++ afin de piloter en pan(x), tilt(y) et zoom une webcam quick cam Sphere AF.
    SE windows7 64bits, driver UVC ver 13.0

    Pour le zoom le forun quickcamteam conseille d'utiliser le fichier LVUVCPublic.h.

    ce fichier commence par ces lignes que je ne comprends pas vraiment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /*******************************************************************************
     * GUIDS
     ******************************************************************************/
     
    // {CAAE4966-272C-44a9-B792-71953F89DB2B}
    #define STATIC_PROPSETID_LOGITECH_PUBLIC1 \
        0xCAAE4966, 0x272C, 0x44A9, 0xB7, 0x92, 0x71, 0x95, 0x3F, 0x89, 0xDB, 0x2B
    DEFINE_GUIDSTRUCT("CAAE4966-272C-44a9-B792-71953F89DB2B", PROPSETID_LOGITECH_PUBLIC1);
    #define PROPSETID_LOGITECH_PUBLIC1  DEFINE_GUIDNAMED(PROPSETID_LOGITECH_PUBLIC1)
    pour la commande du zoom je code la fonction:
    (je n'ai laissé que l'essentiel)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    HRESULT CameraZoom(long value)
    {
        HRESULT hr = 0;
        KSPROPERTY_LP1_DIGITAL_ZOOM_S setting;
     
        setting.ulZoom = value;
     
        IKsPropertySet *pKsPropertySet = NULL;
         hr = pFilter->QueryInterface(IID_IKsPropertySet,(void**)&pKsPropertySet);
     
        hr = pKsPropertySet->Set(PROPSETID_LOGITECH_PUBLIC1,KSPROPERTY_LP1_DIGITAL_ZOOM,NULL,0,&setting,sizeof(setting));
     
        return hr;
    }
    lors de la construction de l'application j'ai une erreur de link:
    [ILINK32 Erreur] Error: '_PROPSETID_LOGITECH_PUBLIC1' externe non résolu, référencé depuis G:\CAM SPHERE\WEBCAM\DEBUG\CAM.OBJ
    qui concerne la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hr = pKsPropertySet->Set(PROPSETID_LOGITECH_PUBLIC1,KSPROPERTY_LP1_DIGITAL_ZOOM,NULL,0,&setting,sizeof(setting));
    PROPSETID_LOGITECH_PUBLIC1 est défini dans le LVUVCPublic.h (les lignes copiées) et je ne vois pas comment tout ceci fonctionne.
    Je n'ai pas trouvé d'explication sur le rôle du GUID.
    Le fichier Ks.h est inclus dans l'entête de mon fichier cpp.
    Je précise que le forum de logitech n'accepte plus de nouveaux inscrits, je ne peux donc pas leur demander une explication.

    J'espère que je suis suffisamment clair.
    Merci pour votre aide.

  2. #2
    Membre extrêmement actif

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 402
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 402
    Par défaut
    bonsoir,

    je dirai qu'une bibliothèque manque pendant l'édition de liens, à la vue du texte d'erreur.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juin 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 3
    Par défaut
    Bonjour,

    qu'il manque, ou qu'il ne trouve pas, quelque chose c'est sur, mais quoi?
    je ne comprends pas la derniere ligne du fichier .h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DEFINE_GUIDSTRUCT("CAAE4966-272C-44a9-B792-71953F89DB2B", PROPSETID_LOGITECH_PUBLIC1);
    #define PROPSETID_LOGITECH_PUBLIC1  DEFINE_GUIDNAMED(PROPSETID_LOGITECH_PUBLIC1

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 055
    Par défaut
    DEFINE_GUIDSTRUCT est une macro, extrait de ks.h.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #if defined(__cplusplus) && _MSC_VER >= 1100
    #define DEFINE_GUIDSTRUCT(g, n) struct __declspec(uuid(g)) n
    #define DEFINE_GUIDNAMED(n) __uuidof(struct n)
    #else // !defined(__cplusplus)
    #define DEFINE_GUIDSTRUCT(g, n) DEFINE_GUIDEX(n)
    #define DEFINE_GUIDNAMED(n) n
    #endif // !defined(__cplusplus)
    KS étant Kernel Streaming

    _MSC_VER n'étant pas défini dans C++Builder
    cela utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     #define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name
    écrire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DEFINE_GUIDSTRUCT("CAAE4966-272C-44a9-B792-71953F89DB2B", PROPSETID_LOGITECH_PUBLIC1);
    revient à écrire cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXTERN_C const CDECL GUID PROPSETID_LOGITECH_PUBLIC1
    Rappelons que GUID c'est une structure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct _GUID {
        unsigned long  Data1;
        unsigned short Data2;
        unsigned short Data3;
        unsigned char  Data4[ 8 ];
    } GUID;

    ensuite tu as cette seconde macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define PROPSETID_LOGITECH_PUBLIC1  DEFINE_GUIDNAMED(PROPSETID_LOGITECH_PUBLIC1
    qui va être traduit en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROPSETID_LOGITECH_PUBLIC1

    Cela semble être un objet COM, tu devrais tenter d'importer la TLB directement par C++Builder, le code généré sera différent de LVUVCPublic.h qui a mon avis est conçu pour MSVC++ et parfois c'est pénible de gérer les subtilités nécessaires à C++Builder !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juin 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 3
    Par défaut
    Merci pour cette explication de texte.

    En mettant en commentaire le problème est effectivement résolu.

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

Discussions similaires

  1. probleme link sur une subclass de QComboBox
    Par eric_vi dans le forum Qt
    Réponses: 4
    Dernier message: 13/04/2010, 21h11
  2. Probleme de pointeur sur une fonction
    Par nicky78 dans le forum C
    Réponses: 2
    Dernier message: 23/05/2004, 20h26
  3. [C#] problème si clic sur "précédent"
    Par moimoimoi dans le forum ASP.NET
    Réponses: 13
    Dernier message: 11/03/2004, 15h30
  4. probleme d'installation sur d'autres postes
    Par VBkiller dans le forum Composants VCL
    Réponses: 4
    Dernier message: 18/09/2002, 18h14

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