error: LNK 2019 无法解析的外部符号

1.如果你是使用的第三方库,你看一下mainplay这个函数是在那个头文件(比如xx.h)里声明的,然后找到其对应的实现库,将其拷贝到你的Debug目录下,再在你的源文件里添加
#pragma comment(lib,"xx.lib")
2.如果你是自己实现的mainplay,那么请确保你声明了该函数后还在源文件里实现了它,而且这个源文件被添加到了你的工程里(这是为了编译该文件,然后将这个函数生成到obj里)

可能你不太明白。这里简单说一下原理。
如果是第三方库,通常作者会提供头文件给你,你include了这个头文件,就可以使用其中声明的函数,如果没有问题,那编译可以通过。但是到链接的时候,编译器需要将函数的实现代码链接到最终的可执行代码里,而函数的实现代码通常就在lib或dll中,#pragma comment(lib,"xx.lib")就是告诉编译器去xx.lib里找函数的实现代码。
而如果是你自己来实现这个函数,只有声明是不够的,还需要你在源代码(.cpp)里去实现它,编译器编译这个cpp的时候会将你的实现代码输出到.obj里,连接器直接去obj里找。

总的来说,【无法解析的外部符号】这样的错误是因为你只声明了函数原型(编译可通过),但却没有提供函数的实现代码(这会导致链接失败LNK2019)。
posted @ 2014-07-08 21:27  xaf_dfg  阅读(262)  评论(0编辑  收藏  举报