日期:2014-05-16  浏览次数:20722 次

编译出现undefined reference 错误
我现在看的是一个项目中的某部分,项目文件总共大小有50M。我在项目的src源码中的一个模块(例如:osdc)中,增加了两个文件add.cc,add.h.原osdc下面有文件(a.h, a.cc, b.h, b.cc, f.h, f.cc等),其中我实现的时候在a.h中包含了add.h(代码如下:),同时我有add.cc实现了.h中的函数。
#ifndef ADD_H
#define ADD_H

typedef unsigned int usInt;
typedef char usChar;
//#define SIZE 300*1024
#define ArraySize 1024*1024*2
#define  BLOCK_MAX_SIZE 1024*1024
class Robin {
   public:
      usInt **TA;
      usInt **TB;
      usInt **TC;
.....
int rabin(usChar * array,BlockLIinkList* blockLinkList);
.....
};
#endif


在a.cc中使用:

.....
BlockLIinkList *blockLinkList = NULL;//使用rabin分块
      Robin *robin = new Robin();
      robin->rabin(temp_data,blockLinkList);
......


之后,我就执行./configure,然后make,make的时候就出现错误说
undefined reference to `Robin::rabin(char*, BlockLIinkList*)。
我不知道是不是因为./configure生成Makefile的时候,不认识我添加的文件(我不熟悉Makefile),我查看通过make之后生成的Makefile时发现,osdc下面除了我新加入的文件add.cc没有,其他所有的.cc文件在Makefile中都能搜索到。

我希望能大家帮帮我,解决这个问题,非常感谢!还有就是针对这种大型项目,如果我增加新的文件的时候需要注意什么?
------解决方案--------------------
引用:
Quote: 引用:

makefile 是要添加的,照葫芦画瓢添加一个

Robin::rabin(char*, BlockLIinkList*) 在 add.cc 文件中,没编译自然报错,看一下有 add.o 吗?


没有.o文件

没有编译,链接自然要报错,修改makefile吧