在网上找了很多的资料,现在总结如下:
-
如果提示未定义的函数是某个库的函数。检查库时候已经安装,并在编译命令中采用-l和-L参数导入库。
-
如果提示未定义的函数是程序中的函数。检查是否在头文件中声明,是否在编译中有对应的obj文件。
-
如果提示未定义的函数是程序中的函数,还有一种很隐蔽的可能:检查改函数的代码的上下文是否有#ifdef或者#ifndef等预编译信息,这也很有可能导致相关代码没有被编译而出现“undefined reference to”提示。
- 声明了一个函数但是没有定义他。或者只找到了声明,但是没有找到函数体
- 在用gcc进行链接工作的时候,没有处理好链接的顺序,导致在链接到某一个文件的时候,其中某些符号还没有被链接。