使用PInvoke将void传递给void

时间:2012-09-25 17:52:40

标签: c# c++ pinvoke

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

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

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

1 个答案:

答案 0 :(得分:2)

你在谈论传递函数指针,对吗? void没有被传递,因为没有任何东西可以传递,因为它是,错误,无效。

如果我理解正确,你需要将指针传递给一个不带参数的函数,什么也不返回,对吧?我目前不在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));