我在将托管void传递给c ++ void时遇到了问题。你知道如何正确地做到这一点吗? 这是我的c ++代码,它获取一个void(__ cdecl * disph)()作为参数
extern "C" __declspec(dllexport) void Display(void(__cdecl* disph)());
我的问题是如何传递一个简单的void()(例如public static void Display()) 那个c ++无效。
答案 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));