Visual c++ 使用visual c+的visual studio 2013上的outlook附加组件+; 我在Visual C++中为Outlook创建了一个插件。 在visual studio 2013中,无法创建_IDTExtensibility2的

Visual c++ 使用visual c+的visual studio 2013上的outlook附加组件+; 我在Visual C++中为Outlook创建了一个插件。 在visual studio 2013中,无法创建_IDTExtensibility2的,visual-c++,visual-studio-2013,outlook-addin,Visual C++,Visual Studio 2013,Outlook Addin,使用visual c+的visual studio 2013上的outlook附加组件+; 我在Visual C++中为Outlook创建了一个插件。 在visual studio 2013中,无法创建_IDTExtensibility2的实现。我犯了不同的错误! 我安装了vs 2013的office工具,但没有任何帮助。 vs2013正在win 7 enterprise上运行。 最后一个错误是: “OnFinish中出错:未能返回新的代码元素。可能是语法错误。新元素名称:_ID

使用visual c+的visual studio 2013上的outlook附加组件+; 我在Visual C++中为Outlook创建了一个插件。 在visual studio 2013中,无法创建_IDTExtensibility2的实现。我犯了不同的错误! 我安装了vs 2013的office工具,但没有任何帮助。 vs2013正在win 7 enterprise上运行。 最后一个错误是: “OnFinish中出错:未能返回新的代码元素。可能是语法错误。新元素名称:_IDTExtensibility2”。 当我尝试向ATL接口添加实现时,就会发生这种情况。 有什么想法吗?会很好的…:-) 谢谢 司仪

STDAPI DllCanUnloadNow(无效)
{
返回_AtlModule.DllCanUnloadNow();
}
//返回类工厂以创建请求类型的对象。
STDAPI DllGetClassObject(_In_uuRefClsidrclsid,_In_RefIdriid,_Outptr_LPVOID*ppv)
{
返回_AtlModule.DllGetClassObject(rclsid、riid、ppv);
}
//DllRegisterServer-将条目添加到系统注册表。
STDAPI DllRegisterServer(无效)
{
//在typelib中注册对象、typelib和所有接口
HRESULT hr=_AtlModule.DllRegisterServer();
返回人力资源;
}
//DllUnregisterServer-从系统注册表中删除项。
STDAPI DllUnregisterServer(无效)
{
HRESULT hr=_AtlModule.DllUnregisterServer();
返回人力资源;
}
//DllInstall-为每台计算机的每个用户向系统注册表添加/删除条目。
STDAPI DllInstall(BOOL bInstall,_In_opt_LPCWSTR pszCmdLine)
{
HRESULT hr=E_失败;
静态常量wchar_t szUserSwitch[]=L“user”;
if(pszCmdLine!=NULL)
{
如果(_wcsnicmp(pszCmdLine,szUserSwitch,_countof(szUserSwitch))==0)
{
ATL::AtlSetPerUserRegistration(true);
}
}
如果(宾斯塔尔)
{   
hr=DllRegisterServer();
如果(失败(小时))
{
DllUnregisterServer();
}
}
其他的
{
hr=DllUnregisterServer();
}
返回人力资源;
}
//这是xxx_p.c文件:
//此始终生成的文件包含代理存根代码
//由midl编译器版本8.00.0603创建的文件
//2015年4月29日星期三16:19:24
//
//sERVERsOFTmAIL.IDL的编译器设置:
//oICF,w1,zP8,ENV=wIN32(32B运行),TARGET_ARCH=x86 8.00.0603
//协议:DCE、MS_-EXT、C_-EXT、健壮
//错误检查:分配引用边界检查枚举存根数据
//vc_u_DECLSPEC()装饰级别:
//_uudeclspec(UUID()),uuudeclspec(SELECTANY),uudeclspec(NOVTABLE)
//declspec_uuid(),midl_接口()
//
//midl_文件标题
#如果!已定义(_m_ia64)&&!已定义(_m_amd64)&&!已定义(u arm_uu)
#PRAGMA警告(禁用:4049)/*超过64K源行*/
#如果_msc\u ver>=1200
#PRAGMA警告(推送)
#恩迪夫
#PRAGMA警告(禁用:4211)/*将外部重新定义为静态*/
#PRAGMA警告(禁用:4232)/*DLLIMPORT标识*/
#PRAGMA警告(禁用:4024)/*数组到指针的映射*/
#PRAGMA警告(禁用:4152)/*表达式中的函数/数据指针转换*/
#PRAGMA警告(禁用:4100)/*X86调用中未引用的参数*/
#PRAGMA优化(“,关闭)
#定义使用\u存根\u代理
//验证版本是否足够高,以编译此文件
#IFNDEF\uuu redq\u rpcproxy\u h\u版本__
#定义所需的rpcproxy版本475
#恩迪夫
#包括“RPCPROXY.H”
#IFNDEF\uuuRPCProxy\uH\u版本__
#错误此存根需要更新版本的
#ENDIF/\uuuuu rpcproxy\uh\u版本
#包括“xXX_I.H”
#定义类型\格式\字符串\大小3
#定义过程格式字符串大小1
#定义表达式格式字符串大小1
#将传输_定义为_表_大小0
#定义导线\u封送\u表\u大小0
类型定义结构xXX midl类型格式字符串
{
短垫;
无符号字符格式[类型\格式\字符串\大小];
}xXX\u midl\u类型\u格式\u字符串;
TYPEDEF STRUCT\u xXX\u midl\u proc\u format\u字符串
{
短垫;
无符号字符格式[proc_fORMAT_string_size];
}xXX\u midl\u过程格式\u字符串;
TYPEDEF STRUCT\u xXX\u midl\u expr\u格式\u字符串
{
长垫;
无符号字符格式[expr_格式_字符串_大小];
}xXX\u midl\u expr\u格式\u字符串;
静态常量rpc\u语法\u标识符\u rPCtRANSFERsYNTAX=
{0X8a885d04,0X1ceb,0X11c9,{0X9f,0Xe8,0X08,0X00,0X2b,0X10,0X48,0X60},{2,0};
外部常量xXX\u midl\u type\u format\u string xXX\u midl\u tYPEfORMATsTRING;
外部常量xXX\u midl\u过程格式字符串xXX\u midl\u过程格式字符串;
外部常量xXX\u midl\u expr\u格式字符串xXX\u midl\u expr格式字符串;
外部常量midl_stub_desc oBJECT_sTUBdESC;
外部常量midl\u服务器信息I连接\u服务器信息;
外部常量midl\u stubless\u proxy\u info i连接\u代理信息;
#如果!已定义(\uuuurpc\uWin32\uuuuuu)
#错误:此存根的生成平台无效。
#恩迪夫
#如果!(目标为nt50或更高版本)
#错误您需要wINDOWS 2000或更高版本来运行此存根,因为它使用以下功能:
#错误/健壮的命令行开关。
#错误但是,您的c/c++编译标志表明您打算在早期系统上运行此应用程序。
#错误此应用程序将因rpc\u x\u错误\u存根\u版本错误而失败。
#恩迪夫
静态常量xXX\u midl\u过程格式\u字符串xXX\u midl\u过程格式字符串=
{
0,
{
0X0
}
};
静态常量xXX\u midl\u类型\u格式\u字符串xXX\u midl\u类型格式字符串=
{
0,
{
nDRfCsHORT(0X0),/*0*/
0X0
}
};
//对象接口:iuNKNOWN,版本。0.0,guid={0X00000000,0X0000,0X0000,{0Xc0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X46}
//对象接口:idISPATCH,版本。0.0,guid={0X00020400,0X0000,0X0000,{0Xc0,0X00,0X00,0X00,0X00,0X00,0X00,0X46}
对象接口:icONNECT,版本。0.0,guid={0Xdb80c724,0Xa335,0X467e,{0X98,0X45,0X0b,0Xd3,0X48,0X90,0Xe4,0X63}
#PRAGMA代码_SEG(“.ORP
    STDAPI DllCanUnloadNow(void)
    {
                return _AtlModule.DllCanUnloadNow();
        }
    // Returns a class factory to create an object of the requested type.
    STDAPI DllGetClassObject(_In_ REFCLSID rclsid, _In_ REFIID riid, _Outptr_ LPVOID* ppv)
    {
            return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
    }
    // DllRegisterServer - Adds entries to the system registry.
    STDAPI DllRegisterServer(void)
    {
        // registers object, typelib and all interfaces in typelib
        HRESULT hr = _AtlModule.DllRegisterServer();
            return hr;
    }
    // DllUnregisterServer - Removes entries from the system registry.
    STDAPI DllUnregisterServer(void)
    {
        HRESULT hr = _AtlModule.DllUnregisterServer();
            return hr;
    }
    // DllInstall - Adds/Removes entries to the system registry per user per machine.
    STDAPI DllInstall(BOOL bInstall, _In_opt_  LPCWSTR pszCmdLine)
    {
        HRESULT hr = E_FAIL;
        static const wchar_t szUserSwitch[] = L"user";
        if (pszCmdLine != NULL)
        {
            if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0)
            {
                ATL::AtlSetPerUserRegistration(true);
            }
        }
        if (bInstall)
        {   
            hr = DllRegisterServer();
            if (FAILED(hr))
            {
                DllUnregisterServer();
            }
        }
        else
        {
            hr = DllUnregisterServer();
        }
        return hr;
    }

// and here is the xxx_p.c file:



// THIS always generated FILE CONTAINS THE PROXY STUB CODE 


// fILE CREATED BY midl COMPILER VERSION 8.00.0603 
//AT wED aPR 29 16:19:24 2015
//
// cOMPILER SETTINGS FOR sERVERsOFTmAIL.IDL:
//    oICF, w1, zP8, ENV=wIN32 (32B RUN), TARGET_ARCH=x86 8.00.0603 
//    PROTOCOL : DCE , MS_EXT, C_EXT, ROBUST
//    ERROR CHECKS: ALLOCATION REF BOUNDS_CHECK ENUM STUB_DATA 
//    vc __DECLSPEC() DECORATION LEVEL: 
//         __DECLSPEC(UUID()), __DECLSPEC(SELECTANY), __DECLSPEC(NOVTABLE)
//         declspec_uuid(), midl_interface()
//
// midl_file_heading

#IF !DEFINED(_m_ia64) && !DEFINED(_m_amd64) && !DEFINED(_arm_)


#PRAGMA WARNING( DISABLE: 4049 )  /* MORE THAN 64K SOURCE LINES */
#IF _msc_ver >= 1200
#PRAGMA WARNING(PUSH)
#ENDIF

#PRAGMA WARNING( DISABLE: 4211 )  /* REDEFINE EXTERN TO STATIC */
#PRAGMA WARNING( DISABLE: 4232 )  /* DLLIMPORT IDENTITY*/
#PRAGMA WARNING( DISABLE: 4024 )  /* ARRAY TO POINTER MAPPING*/
#PRAGMA WARNING( DISABLE: 4152 )  /* FUNCTION/DATA POINTER CONVERSION IN EXPRESSION */
#PRAGMA WARNING( DISABLE: 4100 ) /* UNREFERENCED ARGUMENTS IN X86 CALL */

#PRAGMA OPTIMIZE("", OFF ) 

#DEFINE use_stubless_proxy


// VERIFY THAT THE <RPCPROXY.H> VERSION IS HIGH ENOUGH TO COMPILE THIS FILE
#IFNDEF __redq_rpcproxy_h_version__
#DEFINE __required_rpcproxy_h_version__ 475
#ENDIF


#INCLUDE "RPCPROXY.H"
#IFNDEF __rpcproxy_h_version__
#ERROR THIS STUB REQUIRES AN UPDATED VERSION OF <RPCPROXY.H>
#ENDIF // __rpcproxy_h_version__ 


#INCLUDE "xXX_I.H"

#DEFINE type_format_string_size   3                                 
#DEFINE proc_format_string_size   1                                 
#DEFINE expr_format_string_size   1                                 
#DEFINE transmit_as_table_size    0            
#DEFINE wire_marshal_table_size   0            

TYPEDEF STRUCT _xXX_midl_type_format_string
    {
    SHORT          pAD;
    UNSIGNED CHAR  fORMAT[ type_format_string_size ];
    } xXX_midl_type_format_string;

TYPEDEF STRUCT _xXX_midl_proc_format_string
    {
    SHORT          pAD;
    UNSIGNED CHAR  fORMAT[ proc_format_string_size ];
    } xXX_midl_proc_format_string;

TYPEDEF STRUCT _xXX_midl_expr_format_string
    {
    LONG          pAD;
    UNSIGNED CHAR  fORMAT[ expr_format_string_size ];
    } xXX_midl_expr_format_string;


STATIC CONST rpc_syntax_identifier  _rPCtRANSFERsYNTAX = 
{{0X8a885d04,0X1ceb,0X11c9,{0X9f,0Xe8,0X08,0X00,0X2b,0X10,0X48,0X60}},{2,0}};


EXTERN CONST xXX_midl_type_format_string xXX__midl_tYPEfORMATsTRING;
EXTERN CONST xXX_midl_proc_format_string xXX__midl_pROCfORMATsTRING;
EXTERN CONST xXX_midl_expr_format_string xXX__midl_eXPRfORMATsTRING;


EXTERN CONST midl_stub_desc oBJECT_sTUBdESC;


EXTERN CONST midl_server_info icONNECT_sERVERiNFO;
EXTERN CONST midl_stubless_proxy_info icONNECT_pROXYiNFO;



#IF !DEFINED(__rpc_win32__)
#ERROR  iNVALID BUILD PLATFORM FOR THIS STUB.
#ENDIF

#IF !(target_is_nt50_or_later)
#ERROR yOU NEED wINDOWS 2000 OR LATER TO RUN THIS STUB BECAUSE IT USES THESE FEATURES:
#ERROR   /ROBUST COMMAND LINE SWITCH.
#ERROR hOWEVER, YOUR c/c++ COMPILATION FLAGS INDICATE YOU INTEND TO RUN THIS APP ON EARLIER SYSTEMS.
#ERROR tHIS APP WILL FAIL WITH THE rpc_x_wrong_stub_version ERROR.
#ENDIF


STATIC CONST xXX_midl_proc_format_string xXX__midl_pROCfORMATsTRING =
    {
        0,
        {

            0X0
        }
    };

STATIC CONST xXX_midl_type_format_string xXX__midl_tYPEfORMATsTRING =
    {
        0,
        {
            nDRfCsHORT( 0X0 ),  /* 0 */

            0X0
        }
    };


// oBJECT INTERFACE: iuNKNOWN, VER. 0.0,   guid={0X00000000,0X0000,0X0000,{0Xc0,0X00,0X00,0X00,0X00,0X00,0X00,0X46}} 


// oBJECT INTERFACE: idISPATCH, VER. 0.0,    guid={0X00020400,0X0000,0X0000,{0Xc0,0X00,0X00,0X00,0X00,0X00,0X00,0X46}} 


 oBJECT INTERFACE: icONNECT, VER. 0.0,   guid={0Xdb80c724,0Xa335,0X467e,{0X98,0X45,0X0b,0Xd3,0X48,0X90,0Xe4,0X63}} 

#PRAGMA CODE_SEG(".ORPC")
STATIC CONST UNSIGNED SHORT icONNECT_fORMATsTRINGoFFSETtABLE[] =
    {
    (UNSIGNED SHORT) -1,
    (UNSIGNED SHORT) -1,
    (UNSIGNED SHORT) -1,
    (UNSIGNED SHORT) -1,
    0
    };

STATIC CONST midl_stubless_proxy_info icONNECT_pROXYiNFO =
    {
    &oBJECT_sTUBdESC,
    xXX__midl_pROCfORMATsTRING.fORMAT,
    &icONNECT_fORMATsTRINGoFFSETtABLE[-3],
    0,
    0,
    0
    };


STATIC CONST midl_server_info icONNECT_sERVERiNFO = 
    {
    &oBJECT_sTUBdESC,
    0,
    xXX__midl_pROCfORMATsTRING.fORMAT,
    &icONNECT_fORMATsTRINGoFFSETtABLE[-3],
    0,
    0,
    0,
    0};
cinterface_proxy_vtable(7) _icONNECTpROXYvTBL = 
{
    0,
    &iid_icONNECT,
    iuNKNOWN_qUERYiNTERFACE_pROXY,
    iuNKNOWN_aDDrEF_pROXY,
    iuNKNOWN_rELEASE_pROXY ,
    0 /* idISPATCH::gETtYPEiNFOcOUNT */ ,
    0 /* idISPATCH::gETtYPEiNFO */ ,
    0 /* idISPATCH::gETidSoFnAMES */ ,
    0 /* idISPATCH_iNVOKE_pROXY */
};


STATIC CONST prpc_stub_function icONNECT_TABLE[] =
{
    stub_forwarding_function,
    stub_forwarding_function,
    stub_forwarding_function,
    stub_forwarding_function
};

ciNTERFACEsTUBvTBL _icONNECTsTUBvTBL =
{
    &iid_icONNECT,
    &icONNECT_sERVERiNFO,
    7,
    &icONNECT_TABLE[-3],
    csTDsTUBbUFFER_delegating_methods
};

STATIC CONST midl_stub_desc oBJECT_sTUBdESC = 
    {
    0,
    nDRoLEaLLOCATE,
    nDRoLEfREE,
    0,
    0,
    0,
    0,
    0,
    xXX__midl_tYPEfORMATsTRING.fORMAT,
    1, /* -ERROR BOUNDS_CHECK FLAG */
    0X50002, /* nDR LIBRARY VERSION */
    0,
    0X800025B, /* midl vERSION 8.0.603 */
    0,
    0,
    0,  /* NOTIFY & NOTIFY_FLAG ROUTINE TABLE */
    0X1, /* midl FLAG */
    0, /* CS ROUTINES */
    0,   /* PROXY/SERVER INFO */
    0
    };

CONST ciNTERFACEpROXYvTBL * CONST _xXX_pROXYvTBLlIST[] = 
{
    ( ciNTERFACEpROXYvTBL *) &_icONNECTpROXYvTBL,
    0
};

CONST ciNTERFACEsTUBvTBL * CONST _xXX_sTUBvTBLlIST[] = 
{
    ( ciNTERFACEsTUBvTBL *) &_icONNECTsTUBvTBL,
    0
};

pciNTERFACEnAME CONST _xXX_iNTERFACEnAMESlIST[] = 
{
    "icONNECT",
    0
};

CONST iid *  CONST _xXX_bASEiidlIST[] = 
{
    &iid_idISPATCH,
    0
};


#DEFINE _xXX_check_iid(N)   iid_generic_check_iid( _sERVERsOFTmAIL, Piid, N)

INT __STDCALL _xXX_iid_lOOKUP( CONST iid * Piid, INT * PiNDEX )
{

    IF(!_xXX_check_iid(0))
        {
        *PiNDEX = 0;
        RETURN 1;
        }

    RETURN 0;
}

CONST eXTENDEDpROXYfILEiNFO xXX_pROXYfILEiNFO = 
{
    (pciNTERFACEpROXYvTBLlIST *) & _xXX_pROXYvTBLlIST,
    (pciNTERFACEsTUBvTBLlIST *) & _xXX_sTUBvTBLlIST,
    (CONST pciNTERFACEnAME * ) & _xXX_iNTERFACEnAMESlIST,
    (CONST iid ** ) & _xXX_bASEiidlIST,
    & _xXX_iid_lOOKUP, 
    1,
    2,
    0, /* TABLE OF [ASYNC_UUID] INTERFACES */
    0, /* fILLER1 */
    0, /* fILLER2 */
    0  /* fILLER3 */
};
#PRAGMA OPTIMIZE("", ON )
#IF _msc_ver >= 1200
#PRAGMA WARNING(POP)
#ENDIF


#ENDIF // !DEFINED(_m_ia64) && !DEFINED(_m_amd64) && !DEFINED(_arm_) 


And the xxx_i.c:



/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */

/* link this file in with the server and any clients */


 /* File created by MIDL compiler version 8.00.0603 */
/* at Wed Apr 29 16:19:24 2015
 */
/* Compiler settings for Xxx.idl:
    Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING(  ) */

#pragma warning( disable: 4049 )  /* more than 64k source lines */


#ifdef __cplusplus
extern "C"{
#endif 


#include <rpc.h>
#include <rpcndr.h>

#ifdef _MIDL_USE_GUIDDEF_

#ifndef INITGUID
#define INITGUID
#include <guiddef.h>
#undef INITGUID
#else
#include <guiddef.h>
#endif

#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
        DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)

#else // !_MIDL_USE_GUIDDEF_

#ifndef __IID_DEFINED__
#define __IID_DEFINED__

typedef struct _IID
{
    unsigned long x;
    unsigned short s1;
    unsigned short s2;
    unsigned char  c[8];
} IID;

#endif // __IID_DEFINED__

#ifndef CLSID_DEFINED
#define CLSID_DEFINED
typedef IID CLSID;
#endif // CLSID_DEFINED

#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
        const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}

#endif !_MIDL_USE_GUIDDEF_

MIDL_DEFINE_GUID(IID, IID_IConnect,0xDB80C724,0xA335,0x467E,0x98,0x45,0x0B,0xD3,0x48,0x90,0xE4,0x63);


MIDL_DEFINE_GUID(IID, LIBID_XxxLib,0xD6D698BD,0x4AD4,0x4908,0xBC,0x60,0x3E,0x1D,0xFB,0xC8,0x1D,0x59);


MIDL_DEFINE_GUID(CLSID, CLSID_Connect,0x3649CC04,0x53D0,0x4B48,0x82,0x92,0x25,0x00,0xFC,0x7D,0xD3,0xE3);

#undef MIDL_DEFINE_GUID

#ifdef __cplusplus
}
#endif