Проблема заключается в следующем.
Есть некий менеджер (брокер), создающий СОМ-объекты, поддерживающие некий базовый СОМ-интерфейс, скажем, IBase. Любое приложение, создав СОМ-объект брокера, может затем получить у него имеющиеся в наличии объекты как IBase* (согласно IDL описанию интерфейса брокера). Сам IBase дан во включаемом (include) описании. Действие происходит на Windows платформе.
До сих пор вся работало как часы, поскольку использовались только С++ коды. Проблема случилась при попытке создать и получить IBase объкеты из С# приложения. По включённым в references проекта dll-ам VS2005 нагенерило соответствующие C# описания, далее объект менеджера благополучно создаётся, даёт всю информацию, но как дело доходит до попытки получить IBase-объекты, маршаллинг ругается на возвращаемый указатель "Specified cast is invalid" и даёт exception. Никакой другой информации получить не удаётся.
Есть идеи, в чём тут может быть дело ?
Re: C++/C# СОМ объекты, созданные другими СОМ-объектами
Здравствуйте, Константин Л., Вы писали:
КЛ>Здравствуйте, klswww, Вы писали:
КЛ>показывай idl/h и нагенеренные c# врапперы
Оказывается, мой шарп-коллега создал interop-описание руками, так чтобы оно соответствовало исходному idl. В принципе всё совпадает, посему всё благополучно компилится, но вот на фазе выполнения — проблема.
Вопрос, как я понимаю, следует сформулировать следующим образом: как в C# сгенерить interop-описания по имеющимся idl ?
Re[3]: C++/C# СОМ объекты, созданные другими СОМ-объектами
Здравствуйте, klswww, Вы писали:
K>Здравствуйте, Константин Л., Вы писали:
КЛ>>Здравствуйте, klswww, Вы писали:
КЛ>>показывай idl/h и нагенеренные c# врапперы
K>Оказывается, мой шарп-коллега создал interop-описание руками, так чтобы оно соответствовало исходному idl. В принципе всё совпадает, посему всё благополучно компилится, но вот на фазе выполнения — проблема.
K>Вопрос, как я понимаю, следует сформулировать следующим образом: как в C# сгенерить interop-описания по имеющимся idl ?