c ++ builder里面自定义函数的头文件包含有关问题

c ++ builder里面自定义函数的头文件包含问题。
    有一些自定义函数需要在工程中使用。我是这样做的:在a.h里面写了函数声明,在a.cpp里写了函数的具体实现。然后在Unit1.h里面包含a.h,结果在Unit1.cpp里面调用自定义函数时,编译错误,提示XX是无法解析的外部变量。
   而我在Unit1里改成包含a.cpp后,编译通过了,为什么?
------解决方案--------------------
如果报的是链接错误,那么就应该是 你没有将  a.cpp 加入工程,或者没有指定链接 a.obj . 

声明为extern 的,  那么编译器会认为该变量或函数已经被定义,但并不关心其在哪里被定义并实现,
你在 a.h 中声明一个外部的函数,那么,你可以在任意地方实现这个函数, 例如本工程的其他cpp文件中,或者其他工程项目的LIB或OBJ中,如果其实现不在本工程中,就需要指定这个函数的实现是在哪里,如XXX.lib XXX.obj 等