我用Atl开发一个COm组件,但是在添加方法后总报错,
提示如下:d:\新建文件夹\vc++\atl\atl_i.c(41) : error C2370: 'LIBID_ATLLib' : redefinition; different storage class
        c:\program files\microsoft visual studio\vc98\atl\include\atlbase.h(79) : see declaration of 'LIBID_ATLLib'
d:\新建文件夹\vc++\atl\fileexpert.h(15) : fatal error C1903: unable to recover from previous error(s); stopping compilation
FileExpert.cpp
D:\新建文件夹\vc++\atl\FileExpert.cpp(13) : error C2065: 'AFX_MANAGE_STATE' : undeclared identifier
D:\新建文件夹\vc++\atl\FileExpert.cpp(13) : error C2065: 'AfxGetStaticModuleState' : undeclared identifier
第一处错误:
const IID LIBID_ATLLib = {0x22E8A9DE,0x2BFB,0x4E89,{0xBA,0x6A,0x3D,0x44,0x41,0x9B,0x69,0xE7}};
我只是定义四个方法:Copy Delete,Create 和DeleteSTDMETHODIMP CFileExpert::Copy(LPCSTR strSource, LPCSTR strTarget)
{
// TODO: Add your implementation code here
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(!::CopyFile(strSource,strTarget,false))
{
return S_FALSE;
}
return S_OK;
}STDMETHODIMP CFileExpert::Move(LPCSTR strSource, LPCSTR strTarget)
{
// TODO: Add your implementation code here
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(!::MoveFile(strSource,strTarget))
{
return S_FALSE;
}
return S_OK;
}STDMETHODIMP CFileExpert::Create(LPCSTR strFileName)
{
// TODO: Add your implementation code here
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(!::CreateFile(strFileName,0,2,NULL,1,1,NULL))
{
return S_FALSE;
}
return S_OK;
}STDMETHODIMP CFileExpert::Delete(LPCSTR strFileName)
{
// TODO: Add your implementation code here
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(!::DeleteFile(strFileName))
{
return S_FALSE;
}
return S_OK;
}

解决方案 »

  1.   

    你的工程名不要用ATL,这样会有名字冲突,改成其他就可以了。
      

  2.   

    我改过了,但还是不行啊!
    前一处错误改过了,但是,后一处还是不行啊!是不是有什么头文件没加啊!
    D:\新建文件夹\vc++\test\FileExpert.cpp(13) : error C2065: 'AFX_MANAGE_STATE' : undeclared identifier
    D:\新建文件夹\vc++\test\FileExpert.cpp(13) : error C2065: 'AfxGetStaticModuleState' : undeclared identifier
      

  3.   

    要支持MFC才能用上面的AfxXXXXXXX()函数
      

  4.   

    谢谢!!我真的没选支持 MFC
    感谢诸位了!
      

  5.   

    但是,OLE/Com Object Viewer中看布道我的FileExpert。
    这是为什么呢?
    在此麻烦大家了?
      

  6.   

    >D:\新建文件夹\vc++\test\FileExpert目录名最好不要用中文