新人求助关于组件接口调用的错误

xumengdou2015 2015-08-06 11:46:02
使用VS2010 建立了MFC,然后用类向导调入了一个类型库,是个DLL的组件接口

然后我在cpp中include了生产的.h文件,编译
就提示:
1>d:\openfristcard\openfristcard\release\taxcardx.tlh(414): error C2556: “_bstr_t IGoldTax::GetInfo(void)”: 重载函数与“HRESULT IGoldTax::GetInfo(void)”只是在返回类型上不同
1> d:\\openfristcard\openfristcard\release\taxcardx.tlh(210) : 参见“IGoldTax::GetInfo”的声明
1>d:\openfristcard\openfristcard\release\taxcardx.tlh(414): error C2371: “IGoldTax::GetInfo”: 重定义;不同的基类型
1> d:\openfristcard\openfristcard\release\taxcardx.tlh(210) : 参见“IGoldTax::GetInfo”的声明
1>d:\openfristcard\openfristcard\release\taxcardx.tlh(210): error C3803: “_bstr_t IGoldTax::Info”: 属性的类型与它的访问器之一“HRESULT IGoldTax::GetInfo(void)”不兼容
1> d:\openfristcard\openfristcard\release\taxcardx.tlh(202) : 参见“IGoldTax::Info”的声明
1> d:\openfristcard\openfristcard\release\taxcardx.tlh(210) : 参见“IGoldTax::GetInfo”的声明
1>d:\openfristcard\openfristcard\release\taxcardx.tli(919): error C2556: “_bstr_t IGoldTax::GetInfo(void)”: 重载函数与“HRESULT IGoldTax::GetInfo(void)”只是在返回类型上不同
1> d:\openfristcard\openfristcard\release\taxcardx.tlh(210) : 参见“IGoldTax::GetInfo”的声明
1>d:\openfristcard\openfristcard\release\taxcardx.tli(919): error C2371: “IGoldTax::GetInfo”: 重定义;不同的基类型
1> d:\openfristcard\openfristcard\release\taxcardx.tlh(210) : 参见“IGoldTax::GetInfo”的声明
1>d:\openfristcard\openfristcard\release\taxcardx.tli(919): error C2084: 函数“HRESULT IGoldTax::GetInfo(void)”已有主体
1> d:\openfristcard\openfristcard\release\taxcardx.tlh(210) : 参见“GetInfo”的前一个定义



-----------------------------------------------------
让我很疑惑,因为是调用的组件接口,似乎改也没法改,求各位大牛帮助。。第一次发帖什么都不懂
...全文
299 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
潜水专场 2015-12-07
  • 打赏
  • 举报
回复
请问,具体怎么解决的呀,我也遇到同样的问题,谢谢!
xumengdou2015 2015-12-04
  • 打赏
  • 举报
回复
在import里用rename解决了问题~函数重命名
赵4老师 2015-08-10
  • 打赏
  • 举报
回复
MSDN98_1.ISO http://pan.baidu.com/s/1dDF41ix, MSDN98_2.ISO http://pan.baidu.com/s/1bnGo0Vl 先下载安装MSDN98 然后参考: COM Tutorial Samples Tutorial Home Using Samples First Lesson List of Lessons Click a lesson link below to jump to the tutorial narrative for the associated code sample. Directory/Sample Lesson Topic APPUTIL Lesson 0 Win32 Basics: Win32 Application Utility Library READTUT Lesson 1 Win32 Basics: Tutorial Reader and Linking to APPUTIL EXESKEL Lesson 2 Win32 Basics: Win32 EXE Skeleton Application DLLSKEL Lesson 3 Win32 Basics: Win32 DLL Skeleton DLLUSER Lesson 4 Win32 Basics: EXE User of a DLL COMOBJ Lesson 5 COM Objects: Containment and Aggregation in a DLL COMUSER Lesson 6 COM Objects: Nested Aggregation in an EXE User REGISTER Lesson 7 COM Components: Component Object Registration DLLSERVE Lesson 8 COM Components: Component Object DLL Server DLLCLIEN Lesson 9 COM Components: Client Application of DLL Server LICSERVE Lesson 10 COM Components: DLL Licensed Server LICCLIEN Lesson 11 COM Components: Client Application of Licensed Server MARSHAL Lesson 12 COM Components: Custom Interface Standard Marshaling MARSHAL2 Lesson 13 COM Components: Marshaling DLL Self-Registration LOCSERVE Lesson 14 COM Components: Local Server LOCCLIEN Lesson 15 COM Components: Client Application of Local Server APTSERVE Lesson 16 COM Components: Local Server with Multiple Apartments APTCLIEN Lesson 17 COM Components: Client of Multiple Apartment Server REMCLIEN Lesson 18 COM Components: Distributed COM (DCOM) Remote Client FRESERVE Lesson 19 COM Components: Free-threaded Server FRECLIEN Lesson 20 COM Components: Client of Free-threaded Server CONSERVE Lesson 21 COM Components: Connectable Object Server CONCLIEN Lesson 22 COM Components: Client of Connectable Object Server STOSERVE Lesson 23 COM Components: Structured Storage Server STOCLIEN Lesson 24 COM Components: Client of Structured Storage Server PERSERVE Lesson 25 COM Components: IPersistStream Persistent Object Server PERTEXT Lesson 26 COM Components: IPersistStreamInit Persistent Object Server PERDRAW Lesson 27 COM Components: IPersistStorage Persistent Object Server PERCLIEN Lesson 28 COM Components: Client of Persistent Object Servers DCDMARSH Lesson 29 COM Components: Standard Marshaling for DCOM DCDSERVE Lesson 30 COM Components: DCOM Server Using Security DCOMDRAW Lesson 31 COM Components: DCOM Client Using Security INC -- Common include directory used by the code samples LIB -- Common library directory used by the code samples TUTSAMP -- Main branch directory with TUTORIAL.EXE, MAKEALL.BAT, etc. Throughout the sample sequence a clear differentiation is maintained between client and server, with a separate lesson sample for each. Usually, each client/server pair covers an area of COM technology. Here is an overview of the technologies covered by the lessons. Basic Win32 application programming is covered in the APPUTIL, READTUT, EXESKEL, DLLSKEL, and DLLUSER lessons. APPUTIL provides a utility framework for building Win32 applications. It also contains some tools needed for tutorial purposes. READTUT is a very simple EXE application that shows how to link to the APPUTIL static library and call utility functions in it. READTUT also shows how to invoke the COM tutorial Web page reader that is used throughout the sample series. EXESKEL shows a basic Win32 skeleton EXE application built using APPUTIL. DLLSKEL and DLLUSER simularly show a basic Win32 DLL (Dynamic Link Library) skeleton and how to access it from an EXE user application. Basic COM object construction, custom interfaces, and techniques for coding their reuse using aggregation and containment are covered in COMOBJ and COMUSER. The implementation and use of the standard IUnknown interface is covered. The implementation and use of the custom ICar, IUtility, and ICruise interfaces is covered. Basic COM component construction, class factories, component object registration, and techniques for housing COM objects in COM component servers are covered in REGISTER, DLLSERVE, and DLLCLIEN. The implementation and use of the standard IClassFactory interface is covered. COM component Licensing is covered in LICSERVE and LICCLIEN. The implementation and use of the standard IClassFactory2 interface is covered. Out-of-Process local servers and the standard marshaling of custom interfaces are covered in MARSHAL, LOCSERVE, and LOCCLIEN. Explicit self-registration in the standard marshaling DLL is covered in MARSHAL2. The use of the MIDL language to specify custom interfaces is covered. The use of the MIDL compiler to produce proxy/stub marshaling servers is also covered. Apartment model server and client construction are covered in APTSERVE and APTCLIEN. Construction of multiple single-threaded apartments (STAs) in the same process is covered. DCOM (Distributed COM) with custom interfaces operating between client and server across machine boundaries is covered in REMCLIEN. Specifying the remote machine name in the COSERVERINFO structure is covered. Detailed DCOM security issues are not covered. Free-threaded COM components and their access by free-threaded clients are covered in FRESERVE and FRECLIEN. The use of several client worker threads in the multi-threaded apartment (MTA) is covered. The implementation and use of a custom IBall interface is covered. Connectable COM object technology is covered in CONSERVE and CONCLIEN. Event source and sink construction is covered. Implementation and use of the IConnectionPointContainer, IConnectionPoint, IEnumConnectionPoints, and IEnumConnections standard interfaces are covered. The implementation and use of the custom IBall and IBallSink interfaces is covered. Structured storage using COM's compound file technology is covered in STOSERVE and STOCLIEN. A COM-based scribble drawing application is used. Use of the IStorage and IStream standard interfaces is covered. The implementation and use of the custom IPaper and IPaperSink interfaces is covered. Persistent COM objects are covered in PERSERVE, PERTEXT, PERDRAW, and PERCLIEN. IPersistStream is covered in the PERSERVE components. IPersistStreamInit is covered in the PERTEXT components. IPersistStorage is covered in the PERDRAW components. The PERCLIEN client functions these various persistent objects and manages storage for all of them in various substorages and streams within one structured storage compound file. The implementation and use of the custom IPageList, ITextPage, IDrawPage, IPageListSink, ITextPageSink, and IDrawPageSink interfaces is covered. DCOM (Distributed COM) Security is covered in DCDMARSH, DCDSERVE, and DCOMDRAW. The use of CoInitializeSecurity is shown in the DCDSERVE and DCOMDRAW samples. Multiple clients accessing a shared single COM object across machine boundaries is shown in a simple network shared-drawing application. Process and activation security within NT network domains is discussed. Registry AppIDs and their LaunchPermission, AccessPermission, and RunAs named values are discussed. The use of the DCOMCNFG utility is covered. Back to page top © 1995-1998 Microsoft Corporation
xumengdou2015 2015-08-10
  • 打赏
  • 举报
回复
= =手动顶
xumengdou2015 2015-08-08
  • 打赏
  • 举报
回复
手动顶- - ------------------------------------------------------------------------------------- 如果不行的话,我想问问有人做过防伪税控的组件接口没有啊?我在想是不是我使用MFC来调用接口的方式不对,真心很急啊这问题卡了好几天了!!求助求助
假正经的班长 2015-08-06
  • 打赏
  • 举报
回复
如果DLL没错误的话,看起来像是缺少什么宏控制。具体还要看代码 你把 taxcardx.tlh 的 414行上下10行以及210行上下10行,贴出来看看
xumengdou2015 2015-08-06
  • 打赏
  • 举报
回复
引用 3 楼 cjqpker 的回复:
像方法“GetInfo ”的声明和实现各有两份,仅返回值不同,这种情况是不被允许的。不知道你用的是谁提供的DLL
--------------------------------------------------------------------------------------------------------------------------------------------------------------------- 所以是肯定不能实现吗?但是这个是公司给我的组件接口,刚刚得知其他公司使用已经完成了项目开发,是不是因为我调用的方式不正确呢
假正经的班长 2015-08-06
  • 打赏
  • 举报
回复
像方法“GetInfo ”的声明和实现各有两份,仅返回值不同,这种情况是不被允许的。不知道你用的是谁提供的DLL
xumengdou2015 2015-08-06
  • 打赏
  • 举报
回复
引用 1 楼 cjqpker 的回复:
如果DLL没错误的话,看起来像是缺少什么宏控制。具体还要看代码 你把 taxcardx.tlh 的 414行上下10行以及210行上下10行,贴出来看看
--------------------------------------------------------------------------------------------------------------------------------------- 414: short GetUploadFlag ( ); _bstr_t GetCorpName ( ); short GetCancelFlag ( ); _bstr_t GetCipher ( ); _bstr_t GetSign ( ); _bstr_t GetCheckCode ( ); _bstr_t GetInfo ( ); // // Raw methods provided by interface // virtual HRESULT __stdcall raw_OpenCard ( ) = 0; virtual HRESULT __stdcall raw_CloseCard ( ) = 0; virtual HRESULT __stdcall raw_GetInfo ( ) = 0; virtual HRESULT __stdcall raw_Invoice ( ) = 0; virtual HRESULT __stdcall raw_CancelInv ( ) = 0; virtual HRESULT __stdcall raw_PrintInv ( ) = 0; 210: HRESULT OpenCard ( ); HRESULT CloseCard ( ); HRESULT GetInfo ( ); HRESULT Invoice ( ); HRESULT CancelInv ( ); HRESULT PrintInv ( ); HRESULT AddInvList ( ); HRESULT ClearInvList ( ); HRESULT InvInfoInit ( ); HRESULT InvListInit ( ); HRESULT MakeInv ( ); inline _bstr_t IGoldTax::GetInfo ( ) { BSTR _result = 0; HRESULT _hr = get_Info(&_result); if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this)); return _bstr_t(_result, false); } inline HRESULT IGoldTax::GetInfo ( ) { HRESULT _hr = raw_GetInfo(); if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this)); return _hr; }

64,266

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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