我有一个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为参数并调用IDis补丁::GetTypeInfoCount的C++函数时,我总是得到0。为什么?
发布于 2016-06-28 11:58:44
调用IDis补丁::GetTypeInfoCount我忘了检查HRESULT,它是0x8002802b (TYPE_E_ELEMENTNOTFOUND)。我把一个.TLB文件的副本放在我的DLL旁边,然后将“类型”选项设置为false,问题已经解决了。
https://stackoverflow.com/questions/38073949
复制相似问题