Вызов управляемого кода в приложении CLR - PullRequest
1 голос
/ 30 марта 2011

У меня есть следующая функция в DLL библиотеки классов C ++ / CLI:

public delegate void StandardOutputError(String^ Message);

bool foo(System::String^% arg1, System::String^% arg2, System::String^% arg3, StandardOutputError^ Output);

Как мне экспортировать ее, чтобы она могла вызываться произвольным управляемым (C ++ / CLI) кодом?Моя главная задача - аргумент делегата. Можно ли безопасно преобразовать его в указатель на функцию и обратно (то есть, если невозможно напрямую экспортировать функции __clrcall)?

1 Ответ

2 голосов
/ 30 марта 2011

Пока foo находится в общедоступном управляемом типе, вы можете добавить ссылку на свою сборку C ++ / CLI и использовать ее, например, из C # так же, как и для любой другой управляемой сборки.С делегатом StandardOutputError все в порядке.

Суть в том, что управляемые типы экспортируются в метаданные .NET только благодаря тому, что они являются управляемыми типами и компилируются с / clr.Нет __declspec(dllexport) необходимых махинаций.

...