2016-06-28 1 views
0

У меня есть класс C#, который реализует интерфейс, определенный в отдельном внешнем файле TLB, импортированном в мой проект через interop.C# coclass - GetTypeInfoCount возвращает 0

[ComVisible(true)] 
[ComDefaultInterface(typeof(IInterfaceFromSeparateTLB))] 
[ClassInterface(ClassInterfaceType.AutoDual)] 
[Guid("4FFBBD0D-6F4B-47D4-B4F9-586F8C108BAD")] 
[IDispatchImpl(IDispatchImplType.CompatibleImpl)] 
public class MyCoClass : IInterfaceFromSeparateTLB {} 

Когда я прохожу экземпляр MyCoClass для функции в C++, которая принимает в качестве аргумента IDispatch и вызвать IDispatch :: GetTypeInfoCount, я всегда получаю 0. Почему?

ответ

0

Вызов IDispatch :: GetTypeInfoCount Я забыл проверить HRESULT, который был 0x8002802b (TYPE_E_ELEMENTNOTFOUND). Я поставил копию .TLB-файла рядом со своей DLL, а затем установите для параметра «Вставить типы Interop» значение false, и проблема исчезла.

Смежные вопросы