デリゲートを 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++ DLL にメソッドを渡す C# プロジェクトを参照するライブラリとして使用しています。