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