【问题标题】:"error LNK2001: unresolved external symbol" [duplicate]“错误LNK2001:无法解析的外部符号” [重复]
【发布时间】:2011-09-29 16:52:11
【问题描述】:

我在 VC++ 2008 中的程序有问题。 当我编译它时,会列出以下错误。我花了很多 时间在 groups.google.com 上找到原因,但没有评论 帮助过我。有谁知道问题是什么? 谢谢。

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)

我已经包含了包含所有上述外部符号定义的“intdef.h”文件。 Intdef.h 包含:

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;

【问题讨论】:

  • 您是否缺少对象链接定义?
  • 您似乎没有在库中链接。这是什么图书馆?
  • 我签入 intdef.h 文件,定义了标志。由于在我的主项目中将标志“RFL_MAIN”定义为“#define RFL_MAIN”,但在 intdef.h 文件中仍然禁用了所有这些变量. /* rfl 全局 */ #ifdef RFL_MAIN struct ref_pages *rfl_pages = NULL;结构 ref_pages *rfl_cur_page = NULL; ....... #else extern struct ref_pages *rfl_pages;外部结构 ref_pages *rfl_cur_page;外部结构 ref_pages rfl_begin_add_page;外部结构 ref_pages rfl_scan_info;外部结构 ref_pages rfl_found_page; ....... #endif
  • @Martinho:链接定义在 vcproj 文件中定义 - 它告诉链接器在哪里可以找到 .lib 文件(这些外部变量的实现)。右键单击您的项目(在解决方案资源管理器上),选择属性 --> 链接器 --> 输入 - indef 库的 .lib 文件必须出现在那里,链接器才能工作

标签: c++ linker linker-errors


【解决方案1】:

我认为问题出在“extern”关键字上。该关键字指定在代码中的其他位置声明这些值。也许您缺少另一个要编译的 .c/.cpp 文件,其中包含这些变量的声明。同样,您包含此头文件实际上并没有定义任何变量——它只是要求它们存在于其他地方!

【讨论】:

    【解决方案2】:

    您已包含标头但未包含所需的库(那些外部对象的实现)。

    这个库是什么?你是从网上下载的(一些开源的)吗?如果是,请检查该网站的 .lib 文件(库)

    【讨论】:

    • 这些是核心文件,在现有的旧代码中使用。
    【解决方案3】:

    我只是想把它扔在那里,以供将来可能偶然发现这篇文章的其他人使用。

    在工作中,我目前正在将项目从 vs2010(或更高版本)升级到 vs2012,我在其中一个项目中遇到了这个错误。出于某种原因,我决定在 Linker -> Input -> Additional Dependencies 中重新排列我的附加依赖项,它修复了我的错误。

    我不知道从 2010 年到 2012 年链接器发生了什么变化,但显然它需要重新排列我所依赖的 .lib。

    这可能并不常见,但如果您遇到此问题并且存在许多外部依赖项,尝试此操作很容易:只需将引发此错误的依赖项放在列表末尾并重建项目。

    希望有一天这对某人有所帮助!快乐编码!

    【讨论】:

      【解决方案4】:

      我们在使用 windows ras api 时遇到了类似的问题。该问题已通过添加合适的#pragma comment 得到解决。

      【讨论】:

        【解决方案5】:

        你应该看看帖子“什么是未定义的引用/未解决的外部符号错误,我该如何解决?”

        它对未解析的外部符号有很好的解释,并提供了有关如何解决错误的分步调试提示。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-06
          • 1970-01-01
          • 1970-01-01
          • 2013-09-11
          • 2022-01-07
          • 2018-10-28
          • 1970-01-01
          • 2010-11-17
          相关资源
          最近更新 更多