C++ “错误 LNK2001:无法解析的外部符号”
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6598181/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
"error LNK2001: unresolved external symbol"
提问by Annie
I have a problem with my program in VC++ 2008. When I compile it, the following errors are listed. I spent a lot of time on the groups.google.com to find the reason, but no comment helped me. Does anybody knows what the problem is? Thanks.
我在 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)
I have included the "intdef.h" file which contents the definition of all the above external symbol. Intdef.h contains:
我已经包含了“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;
回答by aardvarkk
I think the problem is with the 'extern' keyword. That keyword specifies that those values be declared somewhere else in your code. Perhaps you're missing another .c/.cpp file to compile which contains the declarations of those variables. Again, your inclusion of this header file isn't actually defining any variables -- it's just requiring that they exist somewhere else!
我认为问题出在“extern”关键字上。该关键字指定在代码中的其他位置声明这些值。也许您缺少另一个要编译的 .c/.cpp 文件,其中包含这些变量的声明。同样,您包含这个头文件实际上并没有定义任何变量——它只是要求它们存在于其他地方!
回答by NirMH
You've included the header but not the required library (implementation of those extern objects).
您已经包含了头文件,但没有包含所需的库(这些 extern 对象的实现)。
what is this library? did you download it from the web (some open source)? if yes, check that web site for .lib files (the library)
这个图书馆是什么?你是从网上下载的吗(一些开源的)?如果是,请检查该网站以获取 .lib 文件(库)
回答by TheRealKernel
I just want to throw this out there for others who might stumble upon this post in the future.
我只是想把它扔给其他可能在未来偶然发现这篇文章的人。
At work I am currently upgrading projects from vs2010 (or later) to vs2012 and I happened upon this error in one of the projects. For some reason I decided to rearrange my additional dependencies in Linker -> Input -> Additional Dependencies and it fixed my error.
在工作中,我目前正在将项目从 vs2010(或更高版本)升级到 vs2012,我在其中一个项目中遇到了这个错误。出于某种原因,我决定在 Linker -> Input -> Additional Dependencies 中重新排列我的附加依赖项,它修复了我的错误。
I don't know what changed with the linker from 2010 to 2012 but apparently it required a rearrangement of the .lib's that I was depending on.
我不知道链接器从 2010 年到 2012 年发生了什么变化,但显然它需要重新排列我依赖的 .lib。
It may not be common but if you're having this problem and there are many external dependencies it is easy enough to try this: just put the dependency that is raising this error to the end of the list and rebuild the project.
这可能并不常见,但如果您遇到此问题并且有许多外部依赖项,那么尝试此操作很容易:只需将引发此错误的依赖项放在列表末尾并重建项目。
Hopefully this helps someone someday! Happy Coding!
希望有一天这对某人有所帮助!快乐编码!
回答by Merav Kochavi
You should take a look at the post "What is an undefined reference/unresolved external symbol error and how do I fix it?"
您应该查看“什么是未定义的引用/未解析的外部符号错误以及如何修复它?”的帖子。
It has a great explanation for unresolved external symbols and provides step by step debugging tips on how to resolve your error.
它对未解析的外部符号有很好的解释,并提供有关如何解决错误的分步调试技巧。
回答by Pramod
We faced a similar problem when using the windows ras api. The issue was resolved by adding a suitable #pragma comment.
我们在使用 windows ras api 时遇到了类似的问题。该问题已通过添加合适的#pragma comment解决。