Упорядочьте класс C++ к C#

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

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

6
задан Adam Haile 21 April 2010 в 17:18
поделиться

2 ответа

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

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

11
ответ дан 9 December 2019 в 22:31
поделиться

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

0
ответ дан 9 December 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: