none
La résolution de 2 unresoved RRS feed

  • Question

  • bonjour,

    Je dois déclarer, d'après le linker la méthode suivante : extern "C" char* __cdecl read_index(long offset, FILE *fp). mais je suis choqué de mettre un externe devant l'implémentation de la méthode; D'autre part ça ne résouds pas les problèmes du linker:

    1>morph.obj : error LNK2019: symbole externe non résolu "extern "C" char * __cdecl bin_search(char *,struct _iobuf *)" (?bin_search@@$$J0YAPADPADPAU_iobuf@@@Z) référencé dans la fonction "char * __cdecl `anonymous namespace'::exc_lookup(char *,int)" (?exc_lookup@?A0x86783297@@$$FYAPADPADH@Z)
    1>search.obj : error LNK2001: symbole externe non résolu "extern "C" char * __cdecl bin_search(char *,struct _iobuf *)" (?bin_search@@$$J0YAPADPADPAU_iobuf@@@Z)
    1>wnutil.obj : error LNK2001: symbole externe non résolu "extern "C" char * __cdecl bin_search(char *,struct _iobuf *)" (?bin_search@@$$J0YAPADPADPAU_iobuf@@@Z)
    1>search.obj : error LNK2019: symbole externe non résolu "extern "C" char * __cdecl read_index(long,struct _iobuf *)" (?read_index@@$$J0YAPADJPAU_iobuf@@@Z) référencé dans la fonction "extern "C" struct Index * __cdecl parse_index(long,int,char *)" (?parse_index@@$$J0YAPAUIndex@@JHPAD@Z)
    1>D:\usr\Specification LoaderV4.1\dev\ALN_Kernel\make\SpecificationLoader\Release\SpecificationLoader.exe : fatal error LNK1120: 2 externes non résolus


    Jean Noël Martin


    lundi 19 octobre 2015 19:48

Réponses

  • la déclaration suivante marche

    extern "C" char* __cdecl bin_search( char* searchkey, FILE *fp)

    à condition que se soit déclaré de la même façon dans le Header

    extern "C" char* __cdecl bin_search( char*, FILE *);

    même ci ca me choque, c'est ce qu'il faut faire


    Jean Noël Martin

    • Marqué comme réponse JeanNoel53 mardi 20 octobre 2015 20:38
    mardi 20 octobre 2015 20:37

Toutes les réponses

  • Bonjour, Jean Noël Martin,

    Vérifiez la réponse fournie par Mr. Paul Bacelar dans vos threads précédents :

    Quatre unresolved que je ne comprennais pas

    Des un resolved que je ne comprend pas


    Cordialement,
    Teodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mardi 20 octobre 2015 14:13
    Modérateur
  • il n'y a pas de réponses a cette question dans les threads précédents

    J'ai besoin de savoir quel déclaration je dois mettre pour résoudre ce paroblème


    Jean Noël Martin


    mardi 20 octobre 2015 17:34
  • la déclaration suivante marche

    extern "C" char* __cdecl bin_search( char* searchkey, FILE *fp)

    à condition que se soit déclaré de la même façon dans le Header

    extern "C" char* __cdecl bin_search( char*, FILE *);

    même ci ca me choque, c'est ce qu'il faut faire


    Jean Noël Martin

    • Marqué comme réponse JeanNoel53 mardi 20 octobre 2015 20:38
    mardi 20 octobre 2015 20:37
  • >même ci ca me choque, c'est ce qu'il faut faire

    Il s'agit d'un fichier d'en-tête d'une librairie C et non C++.

    L'approche "standard" est d'encadrer l'inclusion de l'en-tête par extern "C" { et }

    #include <...>
    
    extern "C" {
    ...
    #include "FichierDEnTeteDeBibliothequeEnC1.h"
    ...
    #include "FichierDEnTeteDeBibliothequeEnC2.h"
    ...
    }


    Paul Bacelar, Ex - MVP VC++

    lundi 26 octobre 2015 10:56
    Modérateur
  • merci, mais c'est aussi sur le c est pas seulement sur le h

    Jean Noël Martin


    mardi 27 octobre 2015 19:08
  • Et ?

    Les includes, c'est dans les .cpp et les .h.


    Paul Bacelar, Ex - MVP VC++

    mardi 3 novembre 2015 10:17
    Modérateur