Извикване на управляван код в CLR приложение

Имам следната функция в 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)?


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