Здравствуйте, Odi$$ey, Вы писали:
>вопрос — как на С++/CLI подписаться на событие ManagedClass чтоб вызвать функцию callback со строкой msg из параметра события?
можно попробовать что-то такое:
C#
namespace CL1
{
public delegate void ResultEvent(string msg);
public class ManagedClass
{
public event ResultEvent OnResult;
public void Run(string message)
{
if (OnResult != null)
{
OnResult(message);
}
}
}
}
C++
using namespace System;
using namespace System::Runtime::InteropServices;
typedef void (*Result)(const char* msg);
void Callback(const char* msg)
{
Console::WriteLine(gcnew String(msg));
}
int main(array<System::String ^> ^args)
{
CL1::ResultEvent^ d = safe_cast<CL1::ResultEvent^>(Marshal::GetDelegateForFunctionPointer(IntPtr(Callback), CL1::ResultEvent::typeid));
CL1::ManagedClass c1;
c1.OnResult += d;
c1.Run(L"run");
return 0;
}