Dll 在CLR应用程序中调用托管代码

Dll 在CLR应用程序中调用托管代码,dll,delegates,interop,c++-cli,export,Dll,Delegates,Interop,C++ Cli,Export,我在C++/CLI类库DLL中具有以下函数: public delegate void StandardOutputError(String^ Message); bool foo(System::String^% arg1, System::String^% arg2, System::String^% arg3, StandardOutputError^ Output); 我将如何导出它,以便任意托管(C++/CLI)代码可以调用它?我主要关心的是委托参数-是否可以安全地将其转换为函数指

我在C++/CLI类库DLL中具有以下函数:

public delegate void StandardOutputError(String^ Message);

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

我将如何导出它,以便任意托管(C++/CLI)代码可以调用它?我主要关心的是委托参数-是否可以安全地将其转换为函数指针并返回(即如果无法直接导出_clrcall函数)?

只要
foo
位于公共管理类型内,您可以添加对C++/CLI程序集的引用,并从例如C#中使用它,就像使用任何其他托管程序集一样。
StandardOutputError
委托已经正常


更重要的一点是,托管类型是通过托管类型和使用/clr编译而在.NET元数据中导出的。没有
\uu declspec(dllexport)
需要耍花招。

哦,是的!我没有想到要把它作为参考。谢谢