C++/C# СОМ объекты, созданные другими СОМ-объектами
От: klswww  
Дата: 21.11.07 09:42
Оценка:
Проблема заключается в следующем.
Есть некий менеджер (брокер), создающий СОМ-объекты, поддерживающие некий базовый СОМ-интерфейс, скажем, IBase. Любое приложение, создав СОМ-объект брокера, может затем получить у него имеющиеся в наличии объекты как IBase* (согласно IDL описанию интерфейса брокера). Сам IBase дан во включаемом (include) описании. Действие происходит на Windows платформе.

До сих пор вся работало как часы, поскольку использовались только С++ коды. Проблема случилась при попытке создать и получить IBase объкеты из С# приложения. По включённым в references проекта dll-ам VS2005 нагенерило соответствующие C# описания, далее объект менеджера благополучно создаётся, даёт всю информацию, но как дело доходит до попытки получить IBase-объекты, маршаллинг ругается на возвращаемый указатель "Specified cast is invalid" и даёт exception. Никакой другой информации получить не удаётся.

Есть идеи, в чём тут может быть дело ?
Re: C++/C# СОМ объекты, созданные другими СОМ-объектами
От: Константин Л.  
Дата: 21.11.07 11:29
Оценка:
Здравствуйте, klswww, Вы писали:

показывай idl/h и нагенеренные c# врапперы
Re[2]: C++/C# СОМ объекты, созданные другими СОМ-объектами
От: klswww  
Дата: 03.12.07 15:39
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>Здравствуйте, klswww, Вы писали:


КЛ>показывай idl/h и нагенеренные c# врапперы


Оказывается, мой шарп-коллега создал interop-описание руками, так чтобы оно соответствовало исходному idl. В принципе всё совпадает, посему всё благополучно компилится, но вот на фазе выполнения — проблема.

Вопрос, как я понимаю, следует сформулировать следующим образом: как в C# сгенерить interop-описания по имеющимся idl ?
Re[3]: C++/C# СОМ объекты, созданные другими СОМ-объектами
От: Константин Л.  
Дата: 03.12.07 20:18
Оценка:
Здравствуйте, klswww, Вы писали:

K>Здравствуйте, Константин Л., Вы писали:


КЛ>>Здравствуйте, klswww, Вы писали:


КЛ>>показывай idl/h и нагенеренные c# врапперы


K>Оказывается, мой шарп-коллега создал interop-описание руками, так чтобы оно соответствовало исходному idl. В принципе всё совпадает, посему всё благополучно компилится, но вот на фазе выполнения — проблема.


K>Вопрос, как я понимаю, следует сформулировать следующим образом: как в C# сгенерить interop-описания по имеющимся idl ?


midl.exe -> *.tlb
tlbimport.exe
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.