c++ - MAPI 存根库无法为 Outlook 2016(64 位)初始化 MAPI
问题描述
我的电脑是 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(64 位)设置为默认邮件客户端。
我想也许我需要将 MAPIStubLibrary 更新到最新版本,所以我去https://github.com/stephenegriffin/MAPIStubLibrary然后下载最新版本。
然后将library文件夹下的所有文件复制到我的项目中,包括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 要么未安装,要么具有不同的位数。检查文件中的 Outlook 位数 | 办公室展望 | 关于展望。
推荐阅读
- reactjs - 作为“组件”道具传递的链接组件的类型
- delphi - 最小化应用程序时鼠标单击仿真问题
- javascript - Web 组件 - attributeChangedCallback 未触发
- python - 网页抓取空白返回 - 错误的元素
- php - PHP-React 验证加密签名
- entity-framework - 如何使用我的 UWP 应用部署 MsSQL LocalDB?
- ssh - ubuntu 19.10 上 git 访问 ssh-add 的无效密钥格式
- azure - 我的 Azure SQL 备份(地理位置)在哪里?
- netlogo - NetLogo 监视器报告器的问题不会显示正确的值
- processing - 椭圆冒泡排序