[英]How can I pass struct from C# managed to C++ unmanaged DLL and get struct in result?
[英]How would I pass a C# delegate function to a Managed C++ .Dll?
我在C#中有此委托。
public delegate string ACSharpDelegate(string message);
我將如何創建將接受此委托作為參數的托管C ++ .dll,以便C ++ .dll可以調用它?
您至少需要3個程序集才能避免循環引用。
C#庫:
namespace CSLibrary
{
public class CSClass
{
public delegate string ACSharpDelegate (string message);
public string Hello (string message)
{
return string.Format("Hello {0}", message);
}
}
}
C ++ / CLI庫(參考CSLibrary):
using namespace System;
namespace CPPLibrary {
public ref class CPPClass
{
public:
String^ UseDelegate( CSLibrary::CSClass::ACSharpDelegate^ dlg )
{
String^ dlgReturn = dlg("World");
return String::Format("{0} !", dlgReturn);
}
};
}
C#程序(引用CSLibrary和CPPLibrary):
namespace ConsoleApplication
{
class Program
{
static void Main (string [] args)
{
CSLibrary.CSClass a = new CSLibrary.CSClass ();
CSLibrary.CSClass.ACSharpDelegate dlg = new CSLibrary.CSClass.ACSharpDelegate (a.Hello);
CPPLibrary.CPPClass b = new CPPLibrary.CPPClass ();
String result = b.UseDelegate (dlg);
Console.WriteLine (result);
Console.Read ();
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.