求 Ambiguity between 'Windows' and 'Excel_2k::Windows' 的解决方法
编译的时候出现一堆的错误:
[C++ Error] olectrls.hpp(107): E2015 Ambiguity between 'Windows' and 'Word_2k::Windows'
[C++ Error] SyncObjs.hpp(75): E2015 Ambiguity between 'Windows' and 'Excel_2k::Windows'
[C++ Error] ExtDlgs.hpp(32): E2015 Ambiguity between 'Dialogs' and 'Excel_2k::Dialogs'
[C++ Error] ExtDlgs.hpp(34): E2015 Ambiguity between 'Dialogs' and 'Excel_2k::Dialogs'
[C++ Error] ExtDlgs.hpp(39): E2015 Ambiguity between 'Buttons' and 'Excel_2k::Buttons'
[C++ Error] sbs.cpp(78): E2277 Lvalue required
.......
sbs.cpp包含头文件如下:
----------------------------------
#include <vcl.h>
#pragma hdrstop
#include "share.h"
#include "sbs.h"
#pragma package(smart_init)
#pragma link "Excel_2K_SRVR"
#pragma resource "*.dfm"
......
---------------------------------
sbs.h包含头文件如下:
----------------------------------
#ifndef B_sbsjcxH
#define B_sbsjcxH
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
#include <Grids.hpp>
#include <Dialogs.hpp>
#include <OleServer.hpp>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
#include "Excel_2K_SRVR.h"
-----------------------------------
share.h 包含头文件如下
-----------------------------------
#ifndef B_shareH
#define B_shareH
#include <SysUtils.hpp>
#include <Grids.hpp>
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <DBGrids.hpp>
#include <Dialogs.hpp>
#include <OleServer.hpp>
#include <Chart.hpp>
#include <utilcls.h>
#include <Word_2k.h>
#include <Word_2K_SRVR.h>
#include <Excel_2K_SRVR.h>
------------------------------------
调整#include "Excel_2K_SRVR.h"的位置的确有效果,但是现在sbs.cpp中同时包含了
share.h 和 sbs.h ,而share.h 和 sbs.h 中又都包含有Excel_2K_SRVR.h ,调顺序已经没有用了!!
哪位有办法解决,分全给!!今晚在线等!
[解决办法]
我又重新试一下,我上面的是有问题.按你原来的调证试试
1.将sbs.cpp中的#include "share.h" 放在#include "sbs.h" 之后
2.将share.h 中的#include <Word_2k.h> 放在
#include <Word_2K_SRVR.h>
#include <Excel_2K_SRVR.h>
之后
我测试了一下程序,基本按你的模式,可以了
[解决办法]
命名空间的问题,不同命名空间中有重名的方法或属性,系统编译时无法确定该使用哪个中的。
LZ根据使用的方法或属性的命名空间情况,在用到的属性或方法前面加上system::function或Word_2K::function试试看,你用哪个空间的调用,前面就加上哪个空间的命名。
确切的空间名称你查看下头文件.hpp。
以上不一定正确,但可以参考。