C++ 如何在运行时加载COM DLL
我有一个VB6 COM DLL。我想从C++中使用它。我知道如何登记它,从DLL生成TLB文件,并且在C++中导入它。 但是,我希望在运行时动态地加载和使用DLL,而不需要事先知道它们。这可能吗C++ 如何在运行时加载COM DLL,c++,windows,visual-studio,com,vb6,C++,Windows,Visual Studio,Com,Vb6,我有一个VB6 COM DLL。我想从C++中使用它。我知道如何登记它,从DLL生成TLB文件,并且在C++中导入它。 但是,我希望在运行时动态地加载和使用DLL,而不需要事先知道它们。这可能吗 谢谢,看一下这两篇MSDN文章,以及关于COM组件的免注册激活。这里也有一些类似的问题,因此: 看看这两个MSDN条款,以及关于COM组件的免注册激活。这里也有一些类似的问题,因此: 是的,但你需要把问题弄清楚 有时,您确实预先知道COM接口,但不知道实现。在这种情况下,您可以创建接口的虚拟
谢谢,看一下这两篇MSDN文章,以及关于COM组件的免注册激活。这里也有一些类似的问题,因此:
CoCreateInstance
),并将其存储在适当的智能指针中
有了VB6,它就不那么直接了。这增加了间接性。阅读
IDispatch
。您需要获得已知接口来描述未知接口。这样,就可以在运行时获得未知接口。是的,但您需要更清楚地回答这个问题
有时,您确实预先知道COM接口,但不知道实现。在这种情况下,您可以创建接口的虚拟实现并#导入它。在运行时,您仍然需要注册真正的组件,从中获取一个对象(可能通过CoCreateInstance
),并将其存储在适当的智能指针中
有了VB6,它就不那么直接了。这增加了间接性。阅读
IDispatch
。您需要获得已知接口来描述未知接口。这样,在运行时可以获得未知的接口。imHO,您至少需要一些公共接口(这样就知道在C++端调用什么)。 我会这样做:
希望这有助于
希望这对您有所帮助您希望避免注册它们,还是避免生成类型库和#导入?或者两者都有(我不确定这是否可行)?您希望避免注册它们,还是避免生成类型库和#导入?或者两者都有(我不确定这是否可能)?