GetRecordInfoFromGuids () не удается с ошибкой TYPE_E_LIBNOTREGISTERED/-2147319779/0x8002801DL
на виртуальной машине, но на моей машине разработки, она работает нормально:
HRESULT hr = GetRecordInfoFromGuids(rGuidTypeLib, 1, 0, 0, __uuidof(T), &pRecInfo);
В то же время я могу успешно создавать экземпляры COM-сервера, используя CoCreateInstance()
, только эта функция не работает, поэтому она должна быть зарегистрирована.
Редактировать: Я подозреваю, что это может быть потому, что я указал неправильный uVerMajor
а также uVerMinor
, Как я могу проверить, какая версия действительно зарегистрирована на целевой машине?
Оказалось, это потому, что я регистрировал свой COM-сервер, но не библиотеку типов.
Я использовал это:
RegAsm.exe /codebase MyComServer.dll
Изменение его на это решило проблему:
RegAsm.exe /register /tlb:MyComServer.tlb /codebase MyComServer.dll
Других решений пока нет …