2014-01-17 9 views
1

GetRecordInfoFromGuids() с ошибкой TYPE_E_LIBNOTREGISTERED/-2147319779/0x8002801DL на виртуальной машине, но на моей машине развития, она отлично работает:GetRecordInfoFromGuids() терпит неудачу с TYPE_E_LIBNOTREGISTERED

HRESULT hr = GetRecordInfoFromGuids(rGuidTypeLib, 1, 0, 0, __uuidof(T), &pRecInfo); 

В то же время, я могу успешно создать экземпляры COM-сервера используя CoCreateInstance(), только эта функция не работает, поэтому она должна быть зарегистрирована.

Edit: Я подозреваю, что это может быть потому, что я указал неправильный uVerMajor и uVerMinor. Как я могу проверить, какая версия фактически зарегистрирована на целевой машине?

+0

Вы можете проверить с '1' COM/OLE Viewer, в котором перечислены библиотеки типов, и' 2 ', посмотрев реестр под' HCKR \ TypeLib' (также можно найти и номера версий). –

ответ

1

Это оказалось, потому что я регистрировал свой COM-сервер, но не typelib.

Я использовал это:

RegAsm.exe /codebase MyComServer.dll 

Изменение его это устранило проблему:

RegAsm.exe /register /tlb:MyComServer.tlb /codebase MyComServer.dll 
Смежные вопросы