(高分求解)VC 同时导入msword.olb msppt.olb这两个类型库生成的代码有类对象重定义

hoosean 2009-11-20 11:21:45
我一个工程,同时导入msword.olb msppt.olb这两个类型库,生成代码,msword.h msppt.h,msword.cpp msppt.cpp文件,有些类型有重定义,反正编译时发生链接错误 ,怎么解决,我把一部分链接错误发上来,都一样的提示。事实上,我还要把Excel类型库也加进来了,也是一样的错误提示, 有什么方法,急求!!

msword.obj : error LNK2005: "public: struct IDispatch * __thiscall _Application::GetApplication(void)" (?GetApplication@_Application@@QAEPAUIDispatch@@XZ) already defined in excel.obj
msword.obj : error LNK2005: "public: long __thiscall _Application::GetCreator(void)" (?GetCreator@_Application@@QAEJXZ) already defined in msppt.obj
msword.obj : error LNK2005: "public: struct IDispatch * __thiscall _Application::GetParent(void)" (?GetParent@_Application@@QAEPAUIDispatch@@XZ) already defined in excel.obj
msword.obj : error LNK2005: "public: class CString __thiscall _Application::GetName(void)" (?GetName@_Application@@QAE?AVCString@@XZ) already defined in msppt.obj
msword.obj : error LNK2005: "public: struct IDispatch * __thiscall _Application::GetWindows(void)" (?GetWindows@_Application@@QAEPAUIDispatch@@XZ) already defined in msppt.obj
msword.obj : error LNK2005: "public: struct IDispatch * __thiscall _Application::GetActiveWindow(void)" (?GetActiveWindow@_Application@@QAEPAUIDispatch@@XZ) already defined in msppt.obj
msword.obj : error LNK2005: "public: struct IDispatch * __thiscall _Application::GetSelection(void)" (?GetSelection@_Application@@QAEPAUIDispatch@@XZ) already defined in excel.obj
msword.obj : error LNK2005: "public: struct IDispatch * __thiscall _Application::GetRecentFiles(void)" (?GetRecentFiles@_Application@@QAEPAUIDispatch@@XZ) already defined in excel.obj
msword.obj : error LNK2005: "public: struct IDispatch * __thiscall _Application::GetAutoCorrect(void)" (?GetAutoCorrect@_Application@@QAEPAUIDispatch@@XZ) already defined in msppt.obj
msword.obj : error LNK2005: "public: struct IDispatch * __thiscall _Application::GetAssistant(void)" (?GetAssistant@_Application@@QAEPAUIDispatch@@XZ) already defined in msppt.obj
msword.obj : error LNK2005: "public: struct IDispatch * __thiscall _Application::GetDialogs(void)" (?GetDialogs@_Application@@QAEPAUIDispatch@@XZ) already defined in excel.obj
msword.obj : error LNK2005: "public: struct IDispatch * __thiscall _Application::GetAddIns(void)" (?GetAddIns@_Application@@QAEPAUIDispatch@@XZ) already defined in msppt.obj
msword.obj : error LNK2005: "public: int __thiscall _Application::GetVisible(void)" (?GetVisible@_Application@@QAEHXZ) already defined in excel.obj
msword.obj : error LNK2005: "public: void __thiscall _Application::SetVisible(int)" (?SetVisible@_Application@@QAEXH@Z) already defined in excel.obj
msword.obj : error LNK2005: "public: class CString __thiscall _Application::GetVersion(void)" (?GetVersion@_Application@@QAE?AVCString@@XZ) already defined in msppt.obj
msword.obj : error LNK2005: "public: int __thiscall _Application::GetScreenUpdating(void)" (?GetScreenUpdating@_Application@@QAEHXZ) already defined in excel.obj
msword.obj : error LNK2005: "public: void __thiscall _Application::SetScreenUpdating(int)" (?SetScreenUpdating@_Application@@QAEXH@Z) already defined in excel.obj
msword.obj : error LNK2005: "public: int __thiscall _Application::GetDisplayStatusBar(void)" (?GetDisplayStatusBar@_Application@@QAEHXZ) already defined in excel.obj
msword.obj : error LNK2005: "public: void __thiscall _Application::SetDisplayStatusBar(int)" (?SetDisplayStatusBar@_Application@@QAEXH@Z) already defined in excel.obj
msword.obj : error LNK2005: "public: int __thiscall _Application::GetMathCoprocessorAvailable(void)" (?GetMathCoprocessorAvailable@_Application@@QAEHXZ) already defined in excel.obj
msword.obj : error LNK2005: "public: int __thiscall _Application::GetMouseAvailable(void)" (?GetMouseAvailable@_Application@@QAEHXZ) already defined in excel.obj
msword.obj : error LNK2005: "public: class CString __thiscall _Application::GetBuild(void)" (?GetBuild@_Application@@QAE?AVCString@@XZ) already defined in msppt.obj
...全文
599 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
scfscf 2012-02-13
  • 打赏
  • 举报
回复
test
plusning 2011-12-08
  • 打赏
  • 举报
回复
郁闷了很久,关键时刻竟然犯了个低级错误,上面改了命名空间下面接着使用了using,抓狂!!!
再次感谢此贴,发现此问题!
fatiao998 2010-03-30
  • 打赏
  • 举报
回复
很好,很强大
hoosean 2009-11-21
  • 打赏
  • 举报
回复
上面这个问题也解决,原因是出在用CoCreateInstance函数的一个参数错了CLSCTX_ALL改用CLSCTX_LOCAL_SERVER,就可以了,

但现在是新的问题我创建的PPT对象把PPT文件用SaveAs另存为时,出现了_com_error异常,
hoosean 2009-11-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tr0j4n 的回复:]
引用 4 楼 tttyd 的回复:
#import  "c:\……\ADO\msado.dll" rename_namespace("ADOCG")rename("EOF","EndOfFile")

防止命名空间重复而重命名命名空间!

正解
[/Quote]

这个已经解决了,但就是又有新问题,就是我是要创建PPT,DOC,XLT文件,我一直没办法得到PPT::_Aplication接口对象。
雪影 2009-11-20
  • 打赏
  • 举报
回复
#import "c:\……\ADO\msado.dll" rename_namespace("ADOCG")rename("EOF","EndOfFile")

防止命名空间重复而重命名命名空间!
hoosean 2009-11-20
  • 打赏
  • 举报
回复
也可改用#import导入,只是我不懂,所以希望您详细解惑一下,我知道我这是一个无理的请求!但因为现在急需!
hoosean 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 toperray 的回复:]
rename_namespace
[/Quote]
能不能详细说明一下!我是刚接触这个!不懂,我不是用#import导入的,而是用“向导”-》“添入MFC类型库”导入的!!非常谢谢您的回答!
ToperRay 2009-11-20
  • 打赏
  • 举报
回复
rename_namespace
MoXiaoRab 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tttyd 的回复:]
#import "c:\……\ADO\msado.dll" rename_namespace("ADOCG")rename("EOF","EndOfFile")

防止命名空间重复而重命名命名空间!
[/Quote]

正解
wshcdr 2009-11-20
  • 打赏
  • 举报
回复
rename_namespace your namespace

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧