web-dev-qa-db-fra.com

"erreur LNK2001: symbole externe non résolu"

J'ai un problème avec mon programme dans VC++ 2008. Lorsque je le compile, les erreurs suivantes sont répertoriées. J'ai passé beaucoup de temps sur le groupes.google.com pour trouver la raison, mais aucun commentaire ne m'a aidé. Quelqu'un sait-il quel est le problème? Merci.

error LNK2001: unresolved external symbol "long rfl_xref_id" (?rfl_xref_id@@3JA)
error LNK2001: unresolved external symbol "struct obj_name * pat_objname_list" (?pat_objname_list@@3PAUobj_name@@A)
error LNK2001: unresolved external symbol "struct obj_name * pat_recall_objname_list" (?pat_recall_objname_list@@3PAUobj_name@@A)
error LNK2001: unresolved external symbol "wchar_t * rfl_unresolved_xref_tag" (?rfl_unresolved_xref_tag@@3PA_WA)
error LNK2001: unresolved external symbol "struct ref_pages * rfl_pages" (?rfl_pages@@3PAUref_pages@@A)
error LNK2001: unresolved external symbol "short rfl_use_regen_id" (?rfl_use_regen_id@@3FA)
error LNK2001: unresolved external symbol "long rfl_regen_id" (?rfl_regen_id@@3JA)
error LNK2001: unresolved external symbol "unsigned short rfl_list_status" (?rfl_list_status@@3GA)
error LNK2001: unresolved external symbol "unsigned short rfl_inst_hdr_page" (?rfl_inst_hdr_page@@3GA)
error LNK2001: unresolved external symbol "unsigned short rfl_inst_hdr_ptr" (?rfl_inst_hdr_ptr@@3GA)
error LNK2001: unresolved external symbol "unsigned short rfl_inst_obj" (?rfl_inst_obj@@3GA)
error LNK2001: unresolved external symbol "short rfl_instance_level" (?rfl_instance_level@@3FA)
error LNK2001: unresolved external symbol "short rfl_access_mode" (?rfl_access_mode@@3FA)
error LNK2001: unresolved external symbol "long rfl_select_ref_offset" (?rfl_select_ref_offset@@3JA)
error LNK2001: unresolved external symbol "long rfl_edit_ref_id" (?rfl_edit_ref_id@@3JA)
error LNK2001: unresolved external symbol "long rfl_add_att_offset" (?rfl_add_att_offset@@3JA)
error LNK2001: unresolved external symbol "short rfl_adding_ent_data" (?rfl_adding_ent_data@@3FA)
error LNK2001: unresolved external symbol "long rfl_xref_def_inst_ukey" (?rfl_xref_def_inst_ukey@@3JA)
error LNK2001: unresolved external symbol "long rfl_xref_def_ukey" (?rfl_xref_def_ukey@@3JA)
error LNK2001: unresolved external symbol "long rfl_instance_ukey" (?rfl_instance_ukey@@3JA)
error LNK2001: unresolved external symbol "long rfl_ref_id" (?rfl_ref_id@@3JA)
error LNK2001: unresolved external symbol "unsigned short rfl_next_page_num" (?rfl_next_page_num@@3GA)
error LNK2001: unresolved external symbol "unsigned short rfl_num_pages" (?rfl_num_pages@@3GA)
error LNK2001: unresolved external symbol "unsigned short rfl_page_size" (?rfl_page_size@@3GA)
error LNK2001: unresolved external symbol "struct ref_pages * rfl_cur_page" (?rfl_cur_page@@3PAUref_pages@@A)
error LNK2001: unresolved external symbol "struct ref_def_map * rfl_recall_map" (?rfl_recall_map@@3PAUref_def_map@@A)
error LNK2001: unresolved external symbol "struct ref_xref_image * rfl_image_list" (?rfl_image_list@@3PAUref_xref_image@@A)
error LNK2001: unresolved external symbol "struct ref_xref_refresh * rfl_refresh_info" (?rfl_refresh_info@@3PAUref_xref_refresh@@A)
error LNK2001: unresolved external symbol "short * rfl_form_status" (?rfl_form_status@@3PAFA)
error LNK2001: unresolved external symbol "short rfl_num_forms" (?rfl_num_forms@@3FA)
error LNK2001: unresolved external symbol "long rfl_recall_start_id" (?rfl_recall_start_id@@3JA)
error LNK2001: unresolved external symbol "long rfl_recall_end_id" (?rfl_recall_end_id@@3JA)
error LNK2001: unresolved external symbol "struct ref_pages rfl_begin_add_page" (?rfl_begin_add_page@@3Uref_pages@@A)
error LNK2001: unresolved external symbol "long rfl_add_length" (?rfl_add_length@@3JA)
error LNK2001: unresolved external symbol "struct ref_pages rfl_found_page" (?rfl_found_page@@3Uref_pages@@A)
error LNK2001: unresolved external symbol "short rfl_scan_status" (?rfl_scan_status@@3FA)
error LNK2001: unresolved external symbol "struct ref_pages rfl_scan_info" (?rfl_scan_info@@3Uref_pages@@A)
error LNK2001: unresolved external symbol "struct ref_recall_xrefs * rfl_xref_list" (?rfl_xref_list@@3PAUref_recall_xrefs@@A)
error LNK2001: unresolved external symbol "struct ref_xref_image * rfl_recall_image_list" (?rfl_recall_image_list@@3PAUref_xref_image@@A)
error LNK2001: unresolved external symbol "struct ref_xref_image * rfl_found_image" (?rfl_found_image@@3PAUref_xref_image@@A)

J'ai inclus le fichier "intdef.h" qui contient la définition de tout le symbole externe ci-dessus. Intdef.h contient:

extern struct ref_pages *rfl_pages;
extern struct ref_pages *rfl_cur_page;
extern struct ref_pages rfl_begin_add_page;
extern struct ref_pages rfl_scan_info;
extern struct ref_pages rfl_found_page;
extern struct ref_def_map *rfl_recall_map;
extern struct ref_select_info *rfl_select;
extern struct ref_recall_xrefs *rfl_xref_list;
extern struct ref_xref_image *rfl_image_list;
extern struct ref_xref_image *rfl_found_image;
extern struct ref_xref_image *rfl_recall_image_list;
extern struct ref_xref_refresh *rfl_refresh_info;
extern unsigned short rfl_page_size;
extern unsigned short rfl_num_pages;
extern unsigned short rfl_next_page_num;
extern unsigned short rfl_inst_obj;
extern unsigned short rfl_inst_hdr_ptr;
extern unsigned short rfl_inst_hdr_page;
extern unsigned short rfl_list_status;
extern short rfl_adding_ent_data;
extern short rfl_scan_status;
extern short rfl_access_mode;
extern short rfl_instance_level;
extern short rfl_redraw_layer;
extern long rfl_add_length;
extern long rfl_ref_id;
extern long rfl_edit_ref_id;
extern long rfl_recall_start_id;
extern long rfl_recall_end_id;
extern long rfl_import_ref_id;
extern long rfl_import_xref_id;
extern long rfl_xref_id;
extern long rfl_instance_ukey;
extern long rfl_xref_def_ukey;
extern long rfl_xref_def_inst_ukey;
extern long rfl_add_att_offset;
extern long rfl_select_ref_offset;
extern long rfl_regen_id;
extern double *rfl_extents;
extern _TCHAR **rfl_ref_names;
extern short rfl_use_regen_id;
extern short rfl_ref_cntr;
extern short rfl_num_forms;
extern short *rfl_form_status;
extern _TCHAR *rfl_xref_fpath;
extern _TCHAR *rfl_xref_name;
extern _TCHAR *rfl_xref_ref_name;
extern _TCHAR *rfl_xref_ref_label;
extern _TCHAR *rfl_unresolved_xref_tag;
extern _TCHAR rfl_tran_is_iso;
extern _TCHAR rfl_doing_area;
extern int rfl_nv;
extern double *rfl_ar;
extern short rfl_regen_xref_mode;
5
Annie

Je pense que le problème est avec le mot-clé 'extern'. Ce mot-clé spécifie que ces valeurs doivent être déclarées ailleurs dans votre code. Peut-être manque-t-il un autre fichier .c/.cpp à compiler contenant les déclarations de ces variables. Encore une fois, l’inclusion de ce fichier d’en-tête ne définit en réalité aucune variable, elle exige simplement qu’elles existent ailleurs!

5
aardvarkk

Vous avez inclus l'en-tête mais pas la bibliothèque requise (implémentation de ces objets externes).

quelle est cette bibliothèque? L'avez-vous téléchargé sur le Web (certains open source)? Si oui, vérifiez ce site Web pour les fichiers .lib (la bibliothèque)

3
NirMH

Je veux juste lancer ceci là-bas pour d'autres qui pourraient tomber sur ce post à l'avenir.

Au travail, je suis en train de mettre à jour des projets de vs2010 (ou plus tard) à vs2012 et je suis tombé sur cette erreur dans l’un des projets. Pour une raison quelconque, j'ai décidé de réorganiser mes dépendances supplémentaires dans Linker -> Entrée -> Dépendances supplémentaires et cela a corrigé mon erreur.

Je ne sais pas ce qui a changé avec l'éditeur de liens de 2010 à 2012, mais apparemment, il a fallu réorganiser les fichiers .lib dont je dépendais.

Ce n'est peut-être pas courant, mais si vous rencontrez ce problème et qu'il existe de nombreuses dépendances externes, il est assez simple d'essayer ceci: il suffit de mettre la dépendance qui soulève cette erreur à la fin de la liste et de reconstruire le projet.

J'espère que cela aidera quelqu'un un jour! Bon codage!

1
TheRealKernel

Nous avons rencontré un problème similaire lors de l'utilisation de Windows ras api. Le problème a été résolu en ajoutant un #pragma comment approprié.

0
Pramod

Vous devriez jeter un coup d'oeil à l'article "Qu'est-ce qu'une erreur de symbole externe non définie/référence non résolue et comment puis-je la réparer?"

Il fournit une bonne explication pour les symboles externes non résolus et fournit des conseils de débogage étape par étape sur la façon de résoudre votre erreur.

https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix

0
Merav Kochavi