Вызов управляемого кода в приложении CLR

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

public delegate void StandardOutputError(String^ Message);

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

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


person shadeMe    schedule 30.03.2011    source источник


Ответы (1)


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

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

person ildjarn    schedule 30.03.2011
comment
О, да! Мне не пришло в голову добавить его в качестве ссылки. Спасибо! - person shadeMe; 30.03.2011