error LNK2019: 无法解析的外部符号,麻烦帮忙看看这个错误是怎么回事?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了error LNK2019: 无法解析的外部符号,麻烦帮忙看看这个错误是怎么回事?相关的知识,希望对你有一定的参考价值。
error LNK2019: 无法解析的外部符号, "char * __cdecl cpystr(char const *,char const *)" (?cpystr@@YAPADPBD0@Z),该符号在函数 _main 中被引用。
程序如下:
char *cpystr(char *des,const char *src)
int i = 0;
if (NULL == des || NULL == src)
return NULL;
while (src[i] != '\0')
des[i] = src[i];
i++;
return des;
char *cpystr(const char*,const char*);//此处发生错误
void main()
cpystr("hello world", "hello,world");
system("pause");
char *cpystr(const char*,const char*);//函数声明必须在函数定义的前面
//定义函数 cpystr
char *cpystr(char *des,const char *src)
int i = 0;
if (NULL == des || NULL == src)
return NULL;
while (src[i] != '\0')
des[i] = src[i];
i++;
return des;
void main()
cpystr("hello world", "hello,world");
system("pause");
追问
char *cpystr(const char*,const char*)不是函数char *cpystr(char *des,const char *src)的声明,他俩不是一个函数,这是个C++程序。我试了一下,好像函数只声明不定义就会报这个错误,不知道为什么?
追答C编译器从前到后编译的,不像basic等语音,会先扫描一遍,登记下所有函数(过程),再分析函数(过程)代码,所以函数(过程)的位置无所谓,而C/C++就不同,如果编译程序发现调用某函数,就从这之前查找是否有这函数,如果没有,则报错,符号为定义。这是问题一。问题二,如果只有函数声明,没有定义,则报告link2019错误。
顺便提醒,你对C/C++的函数声明和定义的概念模糊。
函数声明,如:
void func();//注意,这里有一个西文的分号。
函数定义,如:
void func()
error LNK2019: 无法解析的外部符号
error LNK2019: 无法解析的外部符号 _UKGetRemovalLetter@4,该符号在函数 "protected: virtual int __thiscall CPassZoneDemoDlg::OnInitDialog(void)" (?OnInitDialog@CPassZoneDemoDlg@@MAEHXZ) 中被引用 C:\Users\Administrator\Desktop\Elite EL Drive(1)\Samples\PassZoneDemo\PassZoneDemoDlg.obj PassZoneDemo
参考技术A 遇到这种问题一般都是由于缺少相应的库文件右击项目,选择“属性”--“链接器”--“输入”--“附加依赖项”
根据错误中的提示在下图右边的红色框内添加相应的lib文件
再次编译运行即可避免此类错误产生
这是我们常见的错误,我们要学会解决
只有在不断地探索解决的时候才会有收获
这样对程序员才是一种欣喜,一种进步追问
库文件我添加上之后没有什么效果
以上是关于error LNK2019: 无法解析的外部符号,麻烦帮忙看看这个错误是怎么回事?的主要内容,如果未能解决你的问题,请参考以下文章
error LNK2019: 无法解析的外部符号 求解答..
error LNK2019: 无法解析的外部符号 WinMain,error LNK2001: 无法解析的外部符号 WinMain