我在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函数)?
答案 0 :(得分:2)
只要foo
在公共托管类型中,您就可以添加对C ++ / CLI程序集的引用,并从中进行使用。 C#就像你任何其他托管程序集一样。 StandardOutputError
代表已经没事了。
更重要的是,托管类型仅通过托管类型和使用/ clr进行编译而在.NET元数据中导出。不需要__declspec(dllexport)
恶作剧。