MAPI存根库无法为Outlook 2016(64bit)初始化MAPI

问题描述 投票:1回答:1

我的计算机是Windows 7(64位),然后安装Outlook 2016(64位)。

然后,我按照https://docs.microsoft.com/en-us/office/client-developer/outlook/mapi/how-to-link-to-mapi-functions?redirectedfrom=MSDN中的说明使用MAPIStubLibrary。

[我使用的MAPIStubLibrary的版本已于2018-02-26更新。

我将MapiStubLibrary.cpp和StubUtils.cpp直接包含到我的项目中。然后,我调用以下行来初始化MAPI:

if (MAPIInitialize(NULL) != S_OK)
  AfxMessageBox(_T("Initialize MAPI fails!"));

但是,当调用上面的代码时,我会看到一个消息框,显示为“]]

Either there is no default mail client or the current mail client cannot fulfill the messaging request. Please run Microsoft Outlook and set it as the default mail client.

并且函数MAPIInitialize(NULL)将返回E_FAIL。但我已将Outlook 2016(64bit)设置为默认邮件客户端。

[我认为也许我需要将MAPIStubLibrary更新为最新版本,所以我转到https://github.com/stephenegriffin/MAPIStubLibrary,然后下载最新版本。

然后将库文件夹下的所有文件复制到我的项目中,包括MapiStubLibrary.cpp,StubUtils.cpp和StubUtils.h。

然后我在VS2008中重建项目。但是,这次我收到很多错误:

.\MAPIStubLibrary\MapiStubLibrary.cpp(1155) : error C2065: 'nullptr' : undeclared identifier
.\MAPIStubLibrary\StubUtils.cpp(44) : error C2039: 'function' : is not a member of 'std'
.\MAPIStubLibrary\StubUtils.cpp(44) : error C2143: syntax error : missing ';' before '<'
.\MAPIStubLibrary\StubUtils.cpp(44) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
.\MAPIStubLibrary\StubUtils.cpp(45) : error C2086: 'int mapistub::function' : redefinition
        .\MAPIStubLibrary\StubUtils.cpp(44) : see declaration of 'mapistub::function'
.\MAPIStubLibrary\StubUtils.cpp(49) : error C2065: 'logLoadMapiCallback' : undeclared identifier

为什么?

更新:

我仔细检查并确认Outlook为64位:enter image description here

我的计算机是Windows 7(64位),然后安装Outlook 2016(64位)。然后,我按照https://docs.microsoft.com/zh-CN/office/client-developer/outlook/mapi/how-to-link-to-mapi -...]中的说明进行操作[

这表示未安装Outlook或位数不同。检查“文件”中的Outlook位是否有效| Office Outlook |关于Outlook。
c++ visual-c++ outlook mapi
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.