【发布时间】:2020-06-07 14:28:22
【问题描述】:
我的电脑是 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 然后下载最新版本。
然后将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
为什么?
更新:
【问题讨论】:
标签: c++ visual-c++ outlook mapi