1

我在将托管 void 传递给 c++ void 时遇到问题。你知道如何正确地做到这一点吗?这是我的 c++ 代码,它以 void(__cdecl* disph)() 作为参数

extern "C" __declspec(dllexport) void Display(void(__cdecl* disph)());

我的问题是如何将一个简单的 void()(例如 public static void Display())传递给那个 c++ void。

4

1 回答 1

2

您在谈论传递函数指针,对吗?voids 没有被传递,因为没有什么可以传递,因为它是错误的,无效的。

如果我理解正确,您需要将指针传递给不带参数且不返回任何内容的函数,对吗?我现在不在 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));
于 2012-09-25T18:01:13.893 回答