我有一个C#类,它实现了一个在单独的外部TLB文件中定义的接口,通过互操作导入到我的项目中。
[ComVisible(true)]
[ComDefaultInterface(typeof(IInterfaceFromSeparateTLB ))]
[ClassInterface(ClassInterfaceType.AutoDual)]
[Guid("4FFBBD0D-6F4B-47D4-B4F9-586F8C108BAD")]
[IDispatchImpl(IDispatchImplType.CompatibleImpl)]
public class MyCoClass : IInterfaceFromSeparateTLB {}
当我将MyCoClass的实例传递给以IDispatch作为参数并调用IDispatch :: GetTypeInfoCount的C ++函数时,我总是得到0.为什么?
答案 0 :(得分:0)
调用IDispatch :: GetTypeInfoCount我忘了检查HRESULT,即0x8002802b(TYPE_E_ELEMENTNOTFOUND)。我在我的DLL旁边放了.TLB文件的副本,然后将“嵌入互操作类型”选项设置为false,问题就消失了。