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