Маршал C ++ класс для C # - PullRequest
       10

Маршал C ++ класс для C #

5 голосов
/ 21 апреля 2010

Мне нужно получить доступ к коду в собственной C ++ DLL в некотором C # -коде, но у меня возникают проблемы с вычислением маршалинга. Я делал это раньше с кодом, который был прямым C, но, похоже, обнаружил, что это невозможно напрямую с классами C ++. Еще более усложняется тот факт, что многие классы содержат виртуальные или встроенные функции. Я даже пытался пропустить заголовки через PInvoke Interop Assistant , но он подавлял бы почти все, и на самом деле не делал, что делать ... Я предполагаю, потому что он не поддерживается.

Так как, если это вообще возможно, вы можете использовать встроенную DLL класса C ++ из кода .NET. Если мне нужно использовать посредника (CLR C ++?), Это нормально.

Ответы [ 2 ]

10 голосов
/ 21 апреля 2010

В C # действительно нет простого способа сделать это - я бы порекомендовал сделать простой слой-обертку в C ++ / CLI, который бы представлял классы C ++ как классы .NET.

Это возможноиспользовать P / Invoke и много умов для вызова виртуальных методов C ++ , но я бы не пошел по этому пути, если у вас действительно не было другого выбора.

0 голосов
/ 21 апреля 2010

Вы могли бы взглянуть на SWIG , если не сказать ничего другого, просто посмотреть, как они обрабатывают основной код оболочки (который генерирует SWIG). Я почти ничего не знаю о привязках нативного кода на C #, поэтому не могу судить о правильности их подхода, но они неплохо справляются с другими языковыми привязками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...