为什么DLL编译出的函数是这个样?带有特殊字符 如: @@,该怎么处理

为什么DLL编译出的函数是这个样?带有特殊字符 如:?? @@
我编译出的DLL导出函数总带有特殊字符。就像这个样子:      
??1TestResult@CppUnit@@UAE@XZ

DLL是用C++写的,环境是:winxp     vs2005

了解的同志给讲一下,怎么能避免特殊字符?

------解决方案--------------------
用def文件导出即可
------解决方案--------------------
前面加extern 'C '
------解决方案--------------------
用def文件导出,或函数前面加上加extern "C "
------解决方案--------------------
我编译的CPP UNIT的源代码,应该不用修改吧?
没有兄弟遇到这种问题么?
==============================================================
这是个cpp编译器实现基本原理的问题
简单说,就是cpp为了实现函数重载,会在内部修改coder定义的函数名。
------解决方案--------------------
用def文件导出,或函数前面加上加extern "C "
------解决方案--------------------
用def文件导出,或函数前面加上加extern "C "