Program.cs的
class Program
{
public static void He(string v)
{
Console.WriteLine(v);
Console.WriteLine("End?");
}
public delegate void he(string v);
static void Main(string[] args)
{
Class1 cls = new Class1();
IntPtr p = Marshal.GetFunctionPointerForDelegate(new he(He));
cls.call(p, "String");
}
}
TestClassLibrary.h
namespace TestClassLibrary
{
typedef void (Hello)(System::String ^ v);
public ref class Class1
{
public:
void call(IntPtr p,System::String ^v);
};
}
TestClassLibrary.cpp
namespace TestClassLibrary
{
void Class1::call(IntPtr p,System::String ^ v)
{
Hello * h = (Hello *)p.ToPointer();
h(v);
}
}
我不知道这段代码有什么问题:(
(测试类库被编译为托管DLL。)
答案 0 :(得分:1)
托管C ++ / CLI具有委托 - 语法与C#几乎完全相同 - 为什么不使用它们而不涉及编组(因为您无论如何都要编译到托管C ++ / CLI)。