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

Решение

Вы говорите о передаче указателей на функции, верно? 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));
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]