Включение интерфейса C # в библиотеку IDL

У меня есть интерфейс определения в C #, например:

[ComVisible(true), Guid("E37EBA3C-FB2E-4D4A-8A90-F6FAA99E85C9")]
public interface TestClass
{
public void test_function();
}

Я хочу включить это в определение библиотеки в IDL. Я попытался добиться этого, сгенерировав .tlb из интерфейса C # и включив его в importlib. Тем не менее, я не вижу этот интерфейс в моей библиотеке, когда я компилирую свой файл idl, но я вижу все другие интерфейсы, которые я определил в этой библиотеке, путем импорта их файлов idl.

import "AnotherClass.idl"library COMMONPROGRAMS{
importLib(stdole32.tlb)
importLib(stdole2.tlb)
importLib(TestClass.tlb)

interface TestClass;
interface AnotherClass;
}

Итак, я хочу знать:

  • Можно ли включить интерфейс C # в библиотеку IDL?
  • Если так, как я могу это сделать?

Все ответы приветствуются. Заранее благодарю за любые ответы.

0

Решение

Когда вы импортируете TLB с importlib вы не видите интерфейсы в текущем TLB, так как они не являются частью этого TLB. Эти интерфейсы уже определены в TestClass библиотека типов, поэтому они не могут иметь другое определение в CommonPrograms библиотека.

Если вы хотите определить интерфейс в другом месте, но сделать его частью своего TLB, вам нужно импортировать его с import TestClass.idl, Один из способов создания IDL из TLB — открыть TLB в OLE / COM Object Viewer и выбрать File->Save As, а затем отредактируйте его. Я полагаю, что это не то, что вы хотите, так как, скорее всего, вы хотите автоматизировать эту процедуру.

Однако с importlib вы все еще можете ссылаться TestClass интерфейс из типов CommonPrograms, так что это обычно не является большим препятствием, но это, очевидно, зависит от ваших требований.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]