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 :

erreur C2894


Sujet :

Visual C++

  1. #1
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Par défaut erreur C2894
    Bonjour,

    Jai introduit une laibrairie a mon projet, et quand je compile il affiche cette erreur :
    D:\Program Files\Microsoft Visual Studio 8VC\PlatformSDK\include\wspiapi.h : (44)error C2894: templates cannot be declared to have 'C' linkage

    et quand je click sur cette erreur il m'indique : template <typename __CountofType, size_t _N> qui ce trouve dans Wspiapi.h

    Aidez moi SVP a résoudre cet énorme problem, merci énormement

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    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 391
    Par défaut
    N'aurais-tu pas mis un bloc extern "C" { } autour de tes directives d'inclusion ?
    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 éclairé
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Par défaut
    jai essayé,mais dans tous le projet il y'a pas #include "spiapi.h"

    Merci beaucoup

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    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 391
    Par défaut
    "j'ai essayé" quoi ?
    N'importe quoi peut inclure cet en-tête. Et en particulier, windows.h (ou [un header inclut par]*n windows.h) le peut...
    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 éclairé
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Par défaut
    quand je click sur cette erreur il m'indique la ligne : template < typename __CountofType, size_t _N >, jai voulu faire ça : extern "C" { #include "wspiapi.h"} mais jai pas trouvé ou il y'a la declaration de #include "wspiapi.h"


    Merci

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    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 391
    Par défaut
    Relis mon post.
    Je n'ai pas dit "ne manquerait-il pas" mais "n'y aurait-il pas".
    En clair, je pense qu'il y a un bloc extern "C" quelque part autour des inclusions, et il est de trop.
    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 éclairé
    Inscrit en
    Mars 2006
    Messages
    492
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 492
    Par défaut
    Oui, il existe ce type de declaration (extern "C" {......}) dans Wspiapi.h,
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    #ifndef _WSPIAPI_H_
    #define _WSPIAPI_H_
    
    #include <stdio.h>              // sprintf()
    #include <stdlib.h>             // calloc(), strtoul()
    #include <malloc.h>             // calloc()
    #include <string.h>             // strlen(), strcmp(), strstr()
    
    #if defined(__GOT_SECURE_LIB__) && __GOT_SECURE_LIB__ >= 200402L
    
    #define _WSPIAPI_STRCPY_S strcpy_s
    #define _WSPIAPI_STRCAT_S strcat_s
    #define _WSPIAPI_STRNCPY_S strncpy_s
    #define _WSPIAPI_SPRINTF_S_1 sprintf_s
    
    #else
    
    #define _WSPIAPI_STRCPY_S(_Dst, _Size, _Src) strcpy((_Dst), (_Src))
    #define _WSPIAPI_STRCAT_S(_Dst, _Size, _Src) strcat((_Dst), (_Src))
    #define _WSPIAPI_STRNCPY_S(_Dst, _Size, _Src, _Count) strncpy((_Dst), (_Src), (_Count)); (_Dst)[(_Size) - 1] = 0
    #define _WSPIAPI_SPRINTF_S_1(_Dst, _Size, _Format, _Arg1) sprintf((_Dst), (_Format), (_Arg1))
    
    #endif // defined(__GOT_SECURE_LIB__) && __GOT_SECURE_LIB__ >= 200402L
    
    #if !defined(_WSPIAPI_COUNTOF)
    #if !defined(__cplusplus)
    #define _WSPIAPI_COUNTOF(_Array) (sizeof(_Array) / sizeof(_Array[0]))
    #else
    template < typename __CountofType, size_t _N >
    char (&__wspiapi_countof_helper(__CountofType (&_Array)[_N]))[_N];
    #define _WSPIAPI_COUNTOF(_Array) sizeof(__wspiapi_countof_helper(_Array))
    #endif
    #endif
    
    #define WspiapiMalloc(tSize)    calloc(1, (tSize))
    #define WspiapiFree(p)          free(p)
    #define WspiapiSwap(a, b, c)    { (c) = (a); (a) = (b); (b) = (c); }
    #define getaddrinfo             WspiapiGetAddrInfo
    #define getnameinfo             WspiapiGetNameInfo
    #define freeaddrinfo            WspiapiFreeAddrInfo
    
    typedef int (WINAPI *WSPIAPI_PGETADDRINFO) (
        IN  const char                      *nodename,
        IN  const char                      *servname,
        IN  const struct addrinfo           *hints,
        OUT struct addrinfo                 **res);
    
    typedef int (WINAPI *WSPIAPI_PGETNAMEINFO) (
        IN  const struct sockaddr           *sa,
        IN  socklen_t                       salen,
        OUT char                            *host,
        IN  size_t                          hostlen,
        OUT char                            *serv,
        IN  size_t                          servlen,
        IN  int                             flags);
    
    typedef void (WINAPI *WSPIAPI_PFREEADDRINFO) (
        IN  struct addrinfo                 *ai);
    
    
    
    #ifdef __cplusplus
    extern "C"{
    #endif.
    .
    .
    .
    .
    #ifdef  __cplusplus
    }
    #endif
    
    #endif // _WSPIAPI_H_
    
    Comment enlever cette erreur, aidez moi SVP.

    Merci

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    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 391
    Par défaut
    Et moi, je te demande s'il n'y en a pas AUTOUR du #include <wspiapi.h> ou du #include <UnFichierQuiInclutWspiapi.h>...
    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.

Discussions similaires

  1. Erreur fréquente avec ASP et IIS
    Par Community Management dans le forum ASP
    Réponses: 2
    Dernier message: 11/02/2004, 22h20
  2. Check Url pour savoir si erreur 404 ou si le site existe
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/08/2002, 13h49
  3. Réponses: 2
    Dernier message: 27/05/2002, 19h46
  4. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    Réponses: 3
    Dernier message: 13/05/2002, 15h05
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

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