Вызов функции C # из неуправляемого c ++ (через управляемую оболочку) - PullRequest
3 голосов
/ 25 апреля 2011

У меня есть исходники и заголовки C ++ для набора библиотек, которые мне нужно вызывать из приложения C #. Я создал управляемую оболочку C ++ вокруг необходимых мне функций и могу вызывать их из C #, перенаправляя данные назад и вперед.

Теперь самая сложная часть ..

Моя неуправляемая библиотека C ++ генерирует сообщения о состоянии во время работы, и я хотел бы иметь возможность отображать их из вызывающего приложения C #. Мое нынешнее мышление выглядит так:

Мне бы хотелось, чтобы неуправляемый код библиотеки C ++ вызывал функцию в моем коде C #, которую я передаю управляемой оболочке при ее создании. Я нашел несколько руководств по Code Project, но синтаксис устарел.

Если у кого-то есть пример кода или он может указать мне хороший учебник, который был бы великолепен.

Заранее спасибо за любую помощь.

1 Ответ

2 голосов
/ 25 апреля 2011

Вы можете передать делегат .NET функции C ++ / CLI, которая получает указатель на функцию с «совпадающими» аргументами.

Предостережения

  1. Указатель на функцию должен быть соглашением о вызовах STDCALL
  2. Если делегат является членом объекта, этот указатель на функцию не будет учитыватьсяв качестве ссылки, чтобы сохранить объект в живых.Вы должны поддерживать ссылку на объект во время удержания обратного вызова

Поскольку вы считаете, что ваши примеры устарели, я предполагаю, что вы используете новый синтаксис C ++ /CLI.Вот CodeProject с примером того, как это сделать

http://www.codeproject.com/KB/mcpp/FuncPtrDelegate.aspx

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