我对CoGetClassObject()有点小问题。
我有一个应用程序,它必须使用一些特定版本的DLL,但它们也存在于系统中,在较新的版本中。
所以我开始把CoCreateInstance()和loadLibrary()挂在一起,我想这是很好的。问题是加载了两个版本中的DLL。
所以我认为CoGetClassObject()是一个问题/解决方案,因为它提供了一个指针,指向一个对象的接口,该对象与一个包含应用程序必须在旧版本中使用的动态链接库的CLSID相关联。
但是我不知道这个函数“做了什么”,那么我如何“覆盖”这个函数呢?
谢谢。
附言:我是COM编程的新手。
发布于 2011-07-21 01:25:12
如果您希望加载特定的COM,而不管是否安装了较新的版本,也不管较旧的DLL位于何处,则只需完全忽略CoCreateInstance()和CoGetClassObject()。通过LoadLibrary()自己加载旧的动态链接库,然后直接调用其导出的DllGetClassObject()函数来获取动态链接库的IClassFactory接口,然后根据需要调用IClassFactory::CreateInstance()。这是CoCreateInstance()和CoGetClassObject()在内部执行的所有操作,但这绕过了它们执行的注册表查找,以确定要加载的DLL路径。
https://stackoverflow.com/questions/6763537
复制相似问题