我在将托管 void 传递给 c++ void 时遇到问题。你知道如何正确地做到这一点吗?这是我的 c++ 代码,它以 void(__cdecl* disph)() 作为参数
extern "C" __declspec(dllexport) void Display(void(__cdecl* disph)());
我的问题是如何将一个简单的 void()(例如 public static void Display())传递给那个 c++ void。
您在谈论传递函数指针,对吗?void
s 没有被传递,因为没有什么可以传递,因为它是错误的,无效的。
如果我理解正确,您需要将指针传递给不带参数且不返回任何内容的函数,对吗?我现在不在 Windows 机器上,所以这是未经测试的,但是这样的东西应该可以工作:
public delegate void VoidFnDelegate();
public value struct MyDLL
{
[DllImport("MyDll.dll")]
static public void Display(VoidFnDelegate fn);
}
...
void SomeFn() { ... }
MyDll.Display(new VoidFnDelegate(SomeFn));