VC运用msxml,用tlb文件就找不到MSXML2命名空间

VC使用msxml,用tlb文件就找不到MSXML2命名空间?
我在win7下试图用msxml,又要考虑在xp下的兼容性问题,网上两种方案,
第一种用宏定义
#if (_WIN32_WINNT >= 0x0600)  //if vista/win7  
#import "msxml6.dll"    
#else                                            //if xp  
#import "msxml.dll"    
#endif  
第二种
#import <msxml.tlb>
据说会自己去找对应系统下的dll,
但是现在的问题在于,如果用第二种方法,系统直接报告命名空间MSXML2找不到,为啥呢

#include "stdafx.h"
//#include "msxml2.h"
//win7上没有msxml.dll只有msxml6.dll
/*#if (_WIN32_WINNT >= 0x0600)  //if vista/win7  
#import "msxml6.dll"    
#else                                            //if xp  
#import "msxml.dll"    
#endif    */

//#import <msxml.tlb>      //导入msxml库,自动根据系统查找msxml(int).dll

using namespace MSXML2;

int _tmain(int argc, _TCHAR* argv[])
{
MSXML2::IXMLDOMDocumentPtr pDoc; 
    MSXML2::IXMLDOMElementPtr  xmlRoot ; 
return 0;
}

------解决方案--------------------
引用:
引用:你就没看一下导入的到底是啥?
导入的这个东西据说是com dll的导入库,类似普通dll编译时生成的lib文件
不要据说,你自己看一下导入后生成的文件(msxml.tlh),就会发现导入的命名空间是MSXML而不是MSXML2!