Tlbimport (tlb, сгенерированный из библиотеки C #)

Мы создали простую библиотеку классов C #, подобную этой (ClassLibrary1):

[ComVisible(true)]
public struct MyTestStruct
{
public int z;
public int h;
}

[ComVisible(true)]
public interface IMyTestInterface
{
void MyTestFunction();
}

[ComVisible(true)]
public class CMyTestCom : IMyTestInterface
{
public void MyTestFunction()
{
}
}

Экспортируйте из него tlb и используйте:

importlib ( «ClassLibrary1.tlb»); в файле idl.

Проблема в том, что в idl можно использовать тип intarface (IMyTestInterface), но структура недоступна, и мы не знаем почему.

Так что этот idl может быть скомпилирован:

importlib("stdole2.tlb");
importlib("ClassLibrary1.tlb");

[
object,
uuid(DB25FC11-C288-4B31-BE11-5BBA6B273D9B),
dual,
nonextensible,
pointer_default(unique)
]
interface IMyNativeTestObj : IDispatch
{
[id(1)] HRESULT MyFunction([in] IMyTestInterface  *Parameter);
};

И это не

importlib ( «Stdole2.tlb»);
importlib ( «ClassLibrary1.tlb»);

[
object,
uuid(DB25FC11-C288-4B31-BE11-5BBA6B273D9B),
dual,
nonextensible,
pointer_default(unique)
]
interface IMyNativeTestObj : IDispatch
{
[id(1)] HRESULT MyFunction([in] MyTestStruct  *Parameter);
};

мы пробовали tagMyTestStruct с тем же результатом. Если мы откроем tlb с OleView, «MyTestStruct» находится в нем.

1

Решение

Задача ещё не решена.

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector