У меня была проблема передачи управляемого void в c ++ void. Ты знаешь, как правильно это сделать?
Вот мой код на C ++, который получает void (__cdecl * disph) () в качестве параметра
extern "C" __declspec(dllexport) void Display(void(__cdecl* disph)());
И мой вопрос, как я могу передать простую void () (например, public static void Display ())
к этому C ++ пусто.
Вы говорите о передаче указателей на функции, верно? 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));
Других решений пока нет …