GetRecordInfoFromGuids()在虚拟机上失败,错误TYPE_E_LIBNOTREGISTERED/-2147319779/0x8002801DL,但是在我的开发机上,它可以正常工作:

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

同时,我可以使用CoCreateInstance()成功创建COM服务器的实例,只有此函数失败,因此它必须已注册。

编辑:我怀疑这可能是因为我指定了不正确的uVerMajoruVerMinor。如何检查目标计算机上实际注册的版本?

最佳答案

原来是因为我正在注册我的COM服务器,而不是typelib。

我在用这个:

RegAsm.exe /codebase MyComServer.dll

将其更改为此解决了问题:
RegAsm.exe /register /tlb:MyComServer.tlb /codebase MyComServer.dll

09-28 14:45