繁体   English   中英

如何在运行时加载 COM DLL

[英]How to load COM DLL at runtime

我有一个 VB6 COM DLL。 我想从 C++ 中使用它。 我知道如何注册它,从 DLL 生成一个 tlb 文件,并在 C++ 中 #import 它。

但是,我想在运行时动态加载和使用这样的 DLL,而不事先知道它们。 这可能吗?

谢谢,

是的,但你需要让问题更清楚。

有时,您确实知道 COM 接口,而不是实现。 在这种情况下,您可以创建接口的虚拟实现并 #import 。 在运行时,您仍然需要注册真正的组件,从中获取对象(可能通过CoCreateInstance )并将其存储在适当的智能指针中。

使用 VB6,它就不那么直接了。 这增加了一个间接级别。 阅读IDispatch 您需要获取该已知接口来描述未知接口。 这样,可以在运行时获取未知接口。

恕我直言,您至少需要一些通用接口(因此您知道在 C++ 端调用什么)。

我会做类似的事情:

  1. 定义一个通用接口(在它自己的 DLL/TLB 中)

  2. 在一个或多个 COM 服务器中实现此接口

  3. 在 C++ 端导入这个接口(我们称之为client

  4. 定义一种在客户端中传递要使用(动态加载)的 COM 服务器的progid的方法。

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM