VC7,好像是 DECLARE_PROTECT_FINAL_CONSTRUCT() 没定义.错误报告指在这一行.
DECLARE_PROTECT_FINAL_CONSTRUCT()
这行本身不是这个工程里的文件的,是COM库那个工程里的一个头文件里的.错误报告内容是
f:\projects\amyayl\AccessControl.h(46): error C2146: 语法错误 : 缺少“;”(在标识符“HRESULT”的前面)
f:\projects\amyayl\AccessControl.h(46): warning C4183: “DECLARE_PROTECT_FINAL_CONSTRUCT”: 缺少返回类型;假定为返回“int”的成员函数
我添加的代码只有
#include "F:\\projects\\amyayl\\_amyayl_i.c"
#include "F:\\projects\\amyayl\\AccessControl.h"...
::CoInitializeEx(0,0);
IAccessControl *pi=NULL;
HRESULT hre=::CoCreateInstance( CLSID_CAccessControl,NULL,CLSCTX_INPROC_SERVER,IID_IAccessControl,reinterpret_cast<void**>(&pi));
::CoUninitialize();

解决方案 »

  1.   

    看是不是应该这样?
    #include "F:\\projects\\amyayl\\_amyayl_i.c"
    #include "F:\\projects\\amyayl\\_amyayl.h"
      

  2.   

    你試一試把amyayl_i.c和AccessControl.h,amyayl_i.h拷到你的工程文件夾中,在

    #include "F:\\projects\\amyayl\\_amyayl_i.c"
    #include "F:\\projects\\amyayl\\AccessControl.h"
      

  3.   

    #include "F:\\projects\\amyayl\\_amyayl_i.c"
    应该不用加入这一行代码
      

  4.   

    包含的文件错了!
    AccessControl.h是你实现接口的类吧?你应当包含IDL文件经MIDL编译产生的那个头文件。如果你用的是,net,那右键*.idl文件,点击属性,看它给你生成的头文件是哪个文件.