【问题标题】:How to access extract contacts from outlook using C++ dynamically on all versions如何在所有版本上使用 C++ 动态访问 Outlook 中的提取联系人
【发布时间】:2013-05-31 18:16:57
【问题描述】:

我想使用 C++ 从 Outlook(主要是联系人)中提取数据。我已经找到了方法:http://www.codeproject.com/Articles/3695/Importing-contacts-from-Outlook?msg=3005747#xx3005747xx

但是这里的导入语句是硬编码的:#import "E:\Program Files\Common Files\Microsoft Shared\Office10\mso.dll"

是否可以动态加载dll和tlb文件并使用它,以便软件可以在不同版本的outlook和windows中运行。 (目前通过硬编码,我无法访问不同版本的 Outlook,因为路径不同)

【问题讨论】:

标签: c++ com outlook


【解决方案1】:

像这样导入 DLL 并不意味着您以任何方式链接到有问题的 DLL。这只是意味着它将导入 DLL 包含的类型库。类型库将描述您要使用的 COM 组件:接口、coclasses、guid、iid、枚举等。

在运行时实例化 COM 类时,COM 将从标记为 the one that serves it 的组件创建它的实例。因此,在 Office 案例中,例如,如果您只安装了 Office 14,Office 14 将被标记为此类的 COM 服务器,您甚至不知道实际上会加载什么 DLL。

即使您对所依赖的 Office 类型库版本进行硬编码,它也应该适用于 Office 的后续版本,因为 COM 依赖于永远不会更改的二进制合同。

当然,如果您导入 Office 10 库,您将无法使用 Office 14 更新的组件。

【讨论】:

  • 非常感谢您提供的信息。我会检查你的想法。我有点认为它会加载整个 dll。再次感谢。
【解决方案2】:

不要将#import 指向文件,而是提供类名或类型库 GUID。 http://msdn.microsoft.com/en-us/library/8etzzkb6(v=vs.71).aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多