现在看的是一个项目中的某部分,项目文件总共大小有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中都能搜索到。
我希望能大家帮帮我,解决这个问题,非常感谢!还有就是针对这种大型项目,如果我增加新的文件的时候需要注意什么
没有编译,链接自然要报错,修改makefile吧 ,这个Makefile是自动生成的,我修改了Makefile.am将我写的文件加入这个文件,然后再执行./autogen.sh,./configure, make编译就可以了。