我新建一个工程test,在类向导automation项add class->from a type library选择EXCEL.EXE,然后将弹出对话框的所有类都选上,单击OK,然后在Stafx.h中添加#include <afxdisp.h>   #include"excel.h",同时在excel.h文件前后添加#if !defined _HEAD_FILE_EXCEL_
#define _HEAD_FILE_EXCEL_     
....
 #endif
在testcpp文件中的InitInstance函数中添加 if (!AfxOleInit())
{
AfxMessageBox("初始化Ole出错!");
return FALSE;
}运行时完全没有错误,然而按照同样的步骤,对我的工程pipeline进行同样的操作时,出现了以下一大堆错误。没有进行该操作前,我的工程完全正常。error C2011: 'Filters' : 'class' type redefinition
error C2065: 'raw_Refresh' : undeclared identifier
error C2673: 'Refresh' : global functions do not have 'this' pointers
......

解决方案 »

  1.   

    你这个应该是头文件循环重复包含的问题
    你仔细检查检查这些类型的定义之处
    类型定义最好放在cpp文件里,在h文件里进行声明
      

  2.   

    error C2011: 'Filters' : 'class' type redefinition
    重复定义了。检查是否重复包含头文件
    error C2065: 'raw_Refresh' : undeclared identifier
    没定义,检查raw_Refresh是否定义,并在使用的文件里是否包含定义的文件
    error C2673: 'Refresh' : global functions do not have 'this' pointers
    使用的函数是一个全局函数,不能直接使用this指针。新建一个HWND hwnd = this->m_hWnd;
      

  3.   

    谢谢大家了,这个问题已经搞定了,添加的类太多了只选择application,workbooks,_workbook,worksheets,_worksheet,Range这五个类就行了,其他不用改动的