在 32 位和 64 位平台上生成 MAPI 应用程序Building MAPI applications on 32-bit and 64-bit platforms

适用于:Outlook 2013 | Outlook 2016Applies to: Outlook 2013 | Outlook 2016

本主题介绍了 MAPI 开发人员更改和重新生成在 64 位平台上运行的 32 位 MAPI 应用程序以及在 32 位平台上运行的 64 位应用程序所需采取的操作。This topic describes the actions that MAPI developers should take to change and rebuild 32-bit MAPI applications to run on a 64-bit platform, and 64-bit applications to run on a 32-bit platform. 在本主题中,64 位平台为安装了 64 位 Microsoft Outlook 和 64 位 Windows 的计算机,32 位平台为安装了 32 位 Outlook 和 32 位或 64 位 Windows 的计算机。In this topic, a 64-bit platform is a computer installed with 64-bit Microsoft Outlook and 64-bit Windows, and a 32-bit platform is a computer installed with a 32-bit Outlook and 32-bit or 64-bit Windows.

64 位 Outlook 的操作系统和 Office 支持Operating system and Office support for 64-bit Outlook

备注

术语“位数”是指 32 位和 64 位处理器体系结构与应用程序的相关兼容性之间的区别。The term bitness refers to the distinction between 32-bit and 64-bit processor architectures and the associated compatibility of applications. 在本主题中,位数用于限定适用于计算机的 32 位或 64 位处理器体系结构的 Windows、Microsoft Office、Outlook 或 MAPI 应用程序或者在该计算机上运行的其他可能应用程序的版本。In this topic, bitness is used to qualify the version of Windows, Microsoft Office, Outlook, or a MAPI application built to suit a 32-bit or 64-bit processor architecture of a computer, and possibly other applications that run on that computer.

从 Microsoft Office 2010 起,Outlook 提供有 32 位和 64 位应用程序。Starting in Microsoft Office 2010, Outlook is available as a 32-bit and a 64-bit application. 在同一台计算机上,Outlook 的位数取决于 Windows 操作系统(x86 或 x64)的位数和 Microsoft Office 的位数(如该计算机上已安装 Office)。On the same computer, the bitness of Outlook depends on the bitness of the Windows operating system (x86 or x64), and of Microsoft Office, if Office is already installed on that computer. 以下是部分确定安装 32 位或 64 位版本 Outlook 是否可行的因素:The following are some of the factors that determine the feasibility of installing a 32-bit or a 64-bit version of Outlook:

  • 32 位 Office(和 32 位 Outlook)可以安装在 32 位或 64 位版本的 Windows 操作系统上。64 位 Office(和 64 位 Outlook)只能安装在 64 位操作系统上。32-bit Office (and 32-bit Outlook) can be installed on a 32-bit or 64-bit version of the Windows operating system. 64-bit Office (and 64-bit Outlook) can be installed only on a 64-bit operating system.

  • 在 64 位版本的 Windows 操作系统上,默认安装的是 32 位 Office。The default installation of Office on a 64-bit version of the Windows operating system is 32-bit Office.

  • 如果在同一计算机上安装了 Office,则已安装的 Outlook 版本的位数始终与 Office 的位数相同。The bitness of an installed version of Outlook is always the same as the bitness of Office, if Office is installed on the same computer. 换而言之,在已安装 64 位版本的其他 Office 应用程序(如 64 位 Microsoft Word 或 64 位 Microsoft Excel)的同一计算机上,无法安装 32 位版本的 Outlook。In other words, a 32-bit version of Outlook cannot be installed on the same computer that already has 64-bit versions of other Office applications installed, such as 64-bit Microsoft Word or 64-bit Microsoft Excel. 同样,64 位版本的 Outlook 不能安装在已安装 32 位版本的其他 Office 应用程序的同一台计算机上。Similarly, a 64-bit version of Outlook cannot be installed on the same computer that already has 32-bit versions of other Office applications installed.

在 32 位和 64 位平台上准备 MAPI 应用程序Preparing MAPI applications for 32-bit and 64-bit platforms

MAPI 应用程序包括独立应用程序(如 Microsoft Communicator 和 MFCMAPI)以及服务提供程序(如通讯簿、存储和传输提供程序)。MAPI applications include standalone applications such as Microsoft Communicator and MFCMAPI, and service providers such as address book, store, and transport providers. 若要使 MAPI 方法和函数调用在 MAPI 应用程序中工作(对于一个简单 MAPI 函数 MAPISendMail 则例外),MAPI 应用程序的位数必须与要在其上运行该应用程序的计算机上 MAPI 子系统的位数相同。For MAPI method and function calls to work in a MAPI application (with the exception of one Simple MAPI function, MAPISendMail), the bitness of the MAPI application must be the same as the bitness of the MAPI subsystem on the computer that the application is targeted to run on. 而 MAPI 子系统的位数由已安装的 Outlook 版本的位数决定并始终与其相同。The bitness of the MAPI subsystem, in turn, is determined by and always the same as the bitness of the installed version of Outlook. 下表汇总了准备 MAPI 应用程序以在不同位数的 Office 和 Windows 配置的目标计算机上运行所需的操作。The following table summarizes the necessary actions to prepare MAPI applications to run on targeted computers configured with Office and Windows of various bitness.

MAPI 应用程序的位数Bitness of MAPI application 目标计算机上的 Outlook 位数Bitness of Outlook on targeted computer 目标计算机上的 Windows 位数Bitness of Windows on targeted computer 支持应用程序在目标计算机上运行所需的操作Necessary action to enable application to run on targeted computer
32 位32-bit
32 位32-bit
32 位或 64 位32-bit or 64-bit
不需要任何特定操作。No specific action is necessary.
32 位32-bit
64 位64-bit
64 位64-bit
将应用程序重新生成为 64 位应用程序。Rebuild the application as a 64-bit application. 否则,所有 MAPI 方法和函数调用(MAPISendMail 除外)将失败。Otherwise, all MAPI method and function calls (except for MAPISendMail) will fail.
64 位64-bit
64 位64-bit
64 位64-bit
不需要任何特定操作。No specific action is necessary.
64 位64-bit
32 位32-bit
32 位或 64 位32-bit or 64-bit
将应用程序重新生成为 32 位应用程序。Rebuild the application as a 32-bit application. 否则,所有 MAPI 方法和函数调用(MAPISendMail 除外)将失败。Otherwise, all MAPI method and function calls (except for MAPISendMail) will fail.

下面的部分详细介绍了各种应用场景。The following sections further explain each scenario. 对于需要重新生成 MAPI 应用程序的应用场景,请参阅 MAPI 函数链接,以获取与链接和调用 MAPI 函数相关的其他信息。For scenarios that require rebuilding the MAPI application, see Link to MAPI Functions for additional information regarding linking to and calling MAPI functions.

32 位 MAPI 应用程序和 32 位 Outlook32-bit MAPI application and 32-bit Outlook

在安装了 32 位 Outlook 和 32 位或 64 位 Windows 操作系统的计算机上,仍继续支持针对 32 位版本 Outlook(包括 Microsoft Outlook 2013 之前的版本)中提供的 32 位 MAPI 子系统编译的 MAPI 应用程序。MAPI applications compiled for a 32-bit MAPI subsystem that is available in 32-bit versions of Outlook, including those versions prior to Microsoft Outlook 2013, continue to be supported on computers installed with 32-bit Outlook and a 32-bit or 64-bit Windows operating system. 应用程序开发人员无需采取任何特定操作。There is no specific action necessary for the application developers.

32 位 MAPI 应用程序和 64 位 Outlook32-bit MAPI application and 64-bit Outlook

在已安装了 64 位 Outlook 和 64 位 Windows 的计算机上不支持运行 32 位 MAPI 应用程序。32-bit MAPI applications are not supported to run on a computer installed with 64-bit Outlook and 64-bit Windows. 应用程序开发人员必须将应用程序更新和重新生成为适合于 64 位平台的 64 位应用程序。The application developer must update and rebuild the application as a 64-bit application for the 64-bit platform. 这是因为 32 位应用程序无法加载 64 位 Msmapi32.dll 文件。This is because a 32-bit application cannot load a 64-bit Msmapi32.dll file. 若要成功生成适合于 64 位环境的代码,应用程序开发人员必须在其中包含少量 API 更改。There are a small number of API changes that application developers must incorporate to build their code successfully for a 64-bit environment. MAPI 头文件已使用这些更改更新,以支持 64 位平台。MAPI header files have been updated with these changes to support the 64-bit platform. 你可以在 Outlook 2010:MAPI 头文件中下载这些头文件。You can download these header files at Outlook 2010: MAPI Header Files. 开发人员可以使用相同的 MAPI 头文件集生成 32 位和 64 位 MAPI 应用程序。Developers can use this same set of MAPI header files to build both 32-bit and 64-bit MAPI applications.

64 位 MAPI 应用程序和 64 位 Outlook64-bit MAPI application and 64-bit Outlook

在已安装了 64 位 Outlook 和 64 位 Windows 的计算机上支持运行 64 位 MAPI 应用程序。64-bit MAPI applications are supported on computers installed with 64-bit Outlook and 64-bit Windows. 应用程序开发人员无需采取任何特定操作。There is no specific action necessary for the application developers.

64 位 MAPI 应用程序和 32 位 Outlook64-bit MAPI application and 32-bit Outlook

在已安装了 32 位 Outlook 和 32 位或 64 位 Windows 的计算机上不支持运行 64 位 MAPI 应用程序。64-bit MAPI applications are not supported to run on a computer installed with 32-bit Outlook and 32-bit or 64-bit Windows. 应用程序开发人员必须将应用程序更新和重新生成为 32 位应用程序才能使用 32 位 Outlook。The application developer must update and rebuild the application as a 32-bit application to work with 32-bit Outlook. 使用更新后的 MAPI 头文件,可在 Outlook 2010:MAPI 头文件中下载该文件。Use the updated MAPI header files, which you can download at Outlook 2010: MAPI Header Files. 开发人员可以使用相同的 MAPI 头文件集生成 32 位和 64 位 MAPI 应用程序。Developers can use this same set of MAPI header files to build both 32-bit and 64-bit MAPI applications.

例外:MAPISendMailException: MAPISendMail

一般情况下,如果没有先重新生成为 64 位应用程序,则 32 位 MAPI 应用程序不能在 64 位平台(64 位 Windows 上的 64 位 Outlook)上运行;如果没有先重新生成为 32 位应用程序,则 64 位 MAPI 应用程序不能在安装了 32 位 Outlook 和 32 位或 64 位 Windows 的计算机上运行。In general, a 32-bit MAPI application must not run on a 64-bit platform (64-bit Outlook on 64-bit Windows) without first being rebuilt as a 64-bit application, and a 64-bit MAPI application must not run on a computer installed with 32-bit Outlook and 32-bit or 64-bit Windows without first being rebuilt as a 32-bit application. 图 1 所示为出现以上任意情况时显示的警报对话框。Figure 1 shows an alert dialog box that would be displayed if either of these scenarios occurs.

图 1. 用于大部分跨位数 MAPI 调用的错误消息。Figure 1. Error message for most cross-bitness MAPI calls.

用于大部分跨位数 MAPI 调用的错误消息Error message for most cross-bitness MAPI calls

但是,在 Windows-32-bit-on-Windows-64-bit (WOW64) 或 Windows-64-bit-on-Windows-32-bit (WOW32) 应用场景中,所有简单 MAPI 和 MAPI 元素中的一个函数调用 MAPISendMail 将会成功,不会产生以上警报。However, one function call among all Simple MAPI and MAPI elements, MAPISendMail, would succeed in a Windows-32-bit-on-Windows-64-bit (WOW64) or Windows-64-bit-on-Windows-32-bit (WOW32) scenario and would not result in the above alert. 此 WOW64 应用场景仅适用于 Windows 7。This WOW64 scenario only applies to Windows 7.

图 2 显示了 WOW64 应用场景,其中,32 位 MAPI 应用程序在已安装了 64 位 Windows 7 的计算机上调用 MAPISendMailFigure 2 shows a WOW64 scenario in which a 32-bit MAPI application calls MAPISendMail on a computer installed with 64-bit Windows 7. 在此应用场景中,MAPI 库将进行 COM 调用,以启动 64 位 Fixmapi 应用程序。In this scenario, the MAPI library makes a COM call to launch a 64-bit Fixmapi application. Fixmapi 应用程序将隐式链接至 MAPI 库,这会将函数调用路由至 Windows MAPI 存根,而后者反过来会将调用转发给 Outlook MAPI 存根,从而使 MAPISendMail 函数调用成功。The Fixmapi application implicitly links to the MAPI library, which routes the function call to the Windows MAPI stub, which in turn forwards the call to the Outlook MAPI stub, enabling the MAPISendMail function call to succeed.

图 2. 在 WOW64 应用场景中处理 MAPISendMail。Figure 2. Processing MAPISendMail in a WOW64 scenario.

在 WOW64 应用场景中处理 MAPISendMailProcessing MAPISendMail in a WOW64 scenario

另请参阅See also