我正在尝试将委托传递给 c++ 方法代码:
#pragma unmanaged
void login(char *uname, void (*cb)() )
{
if ( strcmp(uname, "test")==0)
{
printf("Correct!\n");
cb();
}
else
{
printf("False\n");
}
}
#pragma managed
public ref class log
{
public: delegate void successdelg();
public: static void logme(String ^s, successdelg ^success)
{
login( (char*)(void*)Marshal::StringToHGlobalAnsi(s), success );
}
};
但我收到此错误:“错误 C2664:'login':无法将参数 2 从 'log::successdelg ^' 转换为 'void (__cdecl *)(void)'”
通常我可以通过将没有任何委托的方法传递给我的 c++ 函数来跳过这个错误,但我将它用作引用我的 c# 项目的库,它将方法从我的 c# 应用程序传递给 c++ dll。