自己写的函数,如何还链接异常

自己写的函数,怎么还链接错误?
--------------------Configuration: TestCase - Win32 Debug--------------------
Compiling...
Skipping... (no relevant changes detected)
TestCaseDlg.cpp
User.cpp
Linking...
DBHelper.obj : error LNK2001: unresolved external symbol "public: class CString __thiscall CUser::getUserPWD(void)" (?getUserPWD@CUser@@QAE?AVCString@@XZ)
DBHelper.obj : error LNK2001: unresolved external symbol "public: class CString __thiscall CUser::getUserName(void)" (?getUserName@CUser@@QAE?AVCString@@XZ)
User.obj : error LNK2001: unresolved external symbol "public: static class CDBHelper * __cdecl CDBHelper::GetDBHelper(void)" (?GetDBHelper@CDBHelper@@SAPAV1@XZ)
Debug/TestCase.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.

TestCase.exe - 4 error(s), 0 warning(s)

CUser是我自己写的类,getUserPWD()和getUserName()都是它的成员函数。怎么报link error?
其它的函数怎么没有报?
有没有天理了?

------解决方案--------------------
dracula_zhch@sina.com.cn,请注明csdn
------解决方案--------------------
1) inline函数的定义和实现需要放在一起,出现这种原因可能是写了定义,而没有写实现。
2)如果函数过大的话,inline被编译器给干掉了,这时在cpp中没有实现,则可能会出现这种错误。
------解决方案--------------------
inline函数还会有这种问题,没遇到过,因为根本就没写过。
------解决方案--------------------
晕倒,你的实现肯定在.cpp文件中,而你想在.h的声明处加inline吧,你把.h的声明去掉,直接在.cpp处的实现处加inline.
------解决方案--------------------
猜测楼主把inline的实现写在了cpp中。对于public型的成员函数,由于需要内连展开(是否真的会展开取决于你的设置和编译器对inline的实际处理,但是在是否报错这方面似乎编译器都是按照字面含义来理解,只要你写了inline,那么就按照这个语义来检测是否有错误,而不管实际代码生成动作是怎样的),而外部只能看到头文件,所以如果内连函数公开了却没有写在头文件中则会连接出错(通常编译器会智能一些,如果你事实上没有在外部真正的使用这个公开成员函数那么不会报这个连接错误)。解决办法要么是去掉内联,要么是把实现代码放到头文件中,或者把这个内连函数改为私有,而使用一个非内连的公开函数来调用它。