我想使用 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"
是否可以动态加载dlls和tlb文件并使用它,以便该软件可以在不同版本的outlook和windows中运行。 (目前通过硬编码我无法访问不同版本的 Outlook,因为路径不同)
最佳答案
像这样导入 DLL 并不意味着您以任何方式链接到有问题的 DLL。这只是意味着它将导入 DLL 包含的类型库。类型库将描述您要使用的 COM 组件:接口(interface)、组件类、guid、iid、枚举等。
在运行时,当您实例化 COM 类时,COM 将从标记为 the one that serves it 的组件创建它的实例.因此,在 Office 案例中,如果您只安装了 Office 14,Office 14 将被标记为此类的 COM 服务器,您甚至不知道实际上将加载什么 DLL。
即使您对所依赖的 Office 类型库版本进行硬编码,它也应该适用于后续版本的 Office,因为 COM 依赖于永远不应更改的二进制契约。
当然,如果您导入 Office 10 库,您将无法使用比方说 Office 14 更新的组件。
关于c++ - 如何在所有版本上使用 C++ 动态访问 outlook 中的提取联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16933296/