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");

参考技术A //声明函数 cpystr
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: 无法解析的外部符号

error LNK2019: 无法解析的外部符号

error LNK2019: 无法解析的外部符号

error LNK2019: 无法解析的外部符号 求解答..

error LNK2019: 无法解析的外部符号 WinMain,error LNK2001: 无法解析的外部符号 WinMain