如何在所有版本中动态访问C++中的Outlook提取联系人 我想用C++从主要的联系人中提取数据。我已经在以下方面找到了解决方法:

如何在所有版本中动态访问C++中的Outlook提取联系人 我想用C++从主要的联系人中提取数据。我已经在以下方面找到了解决方法:,c++,com,outlook,C++,Com,Outlook,但这里的导入语句是硬编码的:导入E:\Program Files\Common Files\Microsoft Shared\Office10\mso.dll 是否可以动态加载DLL和tlb文件并使用它,以便软件可以在不同版本的outlook和windows中工作。目前,通过硬编码,我无法访问outlook的不同版本,因为路径不同导入这样的DLL并不意味着您以任何方式链接到有问题的DLL。这只意味着它将导入DLL包含的类型库。类型库将描述您想要使用的COM组件:接口、类、GUID、IID、枚举等

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


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

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

在运行时实例化COM类时,COM将从标记为的组件创建COM类的实例。因此,在Office的情况下,如果您只安装了Office 14,例如,Office 14将被标记为该类的COM服务器,您甚至不知道实际将加载什么DLL

即使您对所依赖的Office类型库的版本进行硬编码,它也应该与Office的后续版本一起工作,因为COM依赖于永远不会更改的二进制契约


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

请提供类名或类型库GUID,而不是将导入指向文件。

使用老式with如何?@mvp:我检查了Loadlibrary,但我对使用GetProcAddress和此链接中的代码感到困惑:,还有导入所需的.tlb文件的问题。谢谢您的评论。非常感谢您提供的信息。我来看看你的想法。我觉得它可以加载整个dll。再次感谢。