编译错误:named type definition in parentheses解决方案

来源:互联网 发布:python buffer object 编辑:程序博客网 时间:2024/06/06 12:29

今天用VC6编译7Z的SDK,报错一大堆:

Compiling...7zFile.cF:\VC98\INCLUDE\rpcasync.h(45) : error C2220: warning treated as error - no object file generatedF:\VC98\INCLUDE\rpcasync.h(45) : warning C4115: '_RPC_ASYNC_STATE' : named type definition in parentheses7zStream.cAlloc.cF:\VC98\INCLUDE\rpcasync.h(45) : error C2220: warning treated as error - no object file generatedF:\VC98\INCLUDE\rpcasync.h(45) : warning C4115: '_RPC_ASYNC_STATE' : named type definition in parenthesesLzFind.cLzFindMt.cF:\VC98\INCLUDE\rpcasync.h(45) : error C2220: warning treated as error - no object file generatedF:\VC98\INCLUDE\rpcasync.h(45) : warning C4115: '_RPC_ASYNC_STATE' : named type definition in parenthesesLzmaDec.cLzmaEnc.cF:\VC98\INCLUDE\rpcasync.h(45) : error C2220: warning treated as error - no object file generatedF:\VC98\INCLUDE\rpcasync.h(45) : warning C4115: '_RPC_ASYNC_STATE' : named type definition in parenthesesLzmaUtil.cF:\VC98\INCLUDE\rpcasync.h(45) : error C2220: warning treated as error - no object file generatedF:\VC98\INCLUDE\rpcasync.h(45) : warning C4115: '_RPC_ASYNC_STATE' : named type definition in parenthesesThreads.cF:\VC98\INCLUDE\rpcasync.h(45) : error C2220: warning treated as error - no object file generatedF:\VC98\INCLUDE\rpcasync.h(45) : warning C4115: '_RPC_ASYNC_STATE' : named type definition in parenthesesGenerating Code...Error executing cl.exe.

原因是_RPC_ASYNC_STATE结构体的定义在引用了它的后面,定位到_RPC_ASYNC_STATE定义部分VC98\Include\RPCASYNC.H,查看定义源码如下:

typedefenum _RPC_ASYNC_EVENT {    RpcCallComplete,    RpcSendComplete,    RpcReceiveComplete    } RPC_ASYNC_EVENT;typedef void RPC_ENTRYRPCNOTIFICATION_ROUTINE (                  struct _RPC_ASYNC_STATE *pAsync,<span style="white-space:pre"></span>//这里使用了这个结构体,但是其定义在后面                  void *Context,                                                RPC_ASYNC_EVENT Event);typedef RPCNOTIFICATION_ROUTINE *PFN_RPCNOTIFICATION_ROUTINE;    typedef struct _RPC_ASYNC_STATE {    unsigned int    Size; // size of this structure    unsigned long   Signature;    long   Lock;    unsigned long   Flags;    void           *StubInfo;    void           *UserInfo;    void           *RuntimeInfo;    RPC_ASYNC_EVENT Event;    RPC_NOTIFICATION_TYPES NotificationType;    union {        //        // Notification by APC        //        struct {            PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;            HANDLE hThread;            } APC;        //        // Notification by IO completion port        //        struct {            HANDLE hIOPort;            DWORD dwNumberOfBytesTransferred;            DWORD dwCompletionKey;            LPOVERLAPPED lpOverlapped;            } IOC;        //        // Notification by window message        //        struct {            HWND hWnd;            UINT Msg;            } HWND;        //        // Notification by event        //        HANDLE hEvent;        //        // Notification by callback function        //        // This option is available only to OLE        //        PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;        } u;    long Reserved[4];     } RPC_ASYNC_STATE, *PRPC_ASYNC_STATE;



解决方案:

加上前置声明:struct _RPC_ASYNC_STATE。


0 0
原创粉丝点击