Здравствуйте, Максим Алексейкин, Вы писали:
МА>Здравствуйте, WhiningHal, Вы писали:
МА>вот так:
МА>МА> HMODULE hDll = CoLoadLibrary(<lib name>);
МА> m_fpDllGetClassObject = (DLLGETCLASSOBJECT)GetProcAddress(hDll, "DllGetClassObject");
МА> CComPtr<IClassFactory> pCf;
МА> CLSID clsid;
МА> CLSIDFromString(L"{guid of the class}", &clsid);
МА> m_fpDllGetClassObject(clsid, IID_ClassFactory, (LPVOID*)&pCf);
pCf->>CreateInstance(...);
МА> ...
МА>
Можно пойти немного дальше и зарегистрировать объект. Тогда не потребуется переделка клиента. Судя по MSDN, он получит корректные ссылки на объекты.
CoRegisterClassObject(clsid, pCf, CLSCTX_INPROC_SERVER, REGCLS_SINGLEUSE, &SomeGlobalVariable);
С параметрами я недопонял: REGCLS_SINGLEUSE означает, что фабрика доступна одному процессу, или что она исчезнет из области видимости после первого вызова CoGetClassObject() для этого класса?