最近在做一些office方面的东西,碰到一个问题:当用VC加载word以及excel的时候,出现冲突,第一反应是把有冲突的类都改名,后来想想这种方法太繁琐了,于是就想到另外一种方法,加命名空间,如下:
1. 添加 EXCEL9.OLB,会生成excel9.h和excel9.cpp
添加 MSWORD9.OLB,会生成msword.h和msword.cpp
2. 不要在staafx.h中添加对excel9.h和msword.h的引用(很多文章说是在这里引用,只是excel或word是没问题的)
要加上以下2个引用:
#include <COMDEF.H>
#include <CSTDIO>
3. 在excel9.h的开始添加
namespace mexcel //mexcel为命名空间
{
最后加上}
在msword.h的开始添加
namespace mword //mword为命名空间
{
最后加上}
4. 在excel9.cpp的其它引用最后加上
using namespace mexcel;
在msword.cpp的其它引用最后加上
using namespace mword;
5. 在主程序的cpp中添加如下引用
using namespace mword;
using namespace mexcel;
//以下引用也要放在其它引用的后面
#include "excel9.h"
#include "msword.h"
6. 在需要引用word和excel的地方用
mexcel::
mword::
添加对象的引用就OK了