¿Cómo paso un puntero de función desde C++ administrado (C++/CLI) a un método no administrado? Leí algunos artículos, como this one from MSDN, pero describe dos conjuntos diferentes, mientras que solo quiero uno.C++/cli pass (administrado) delegado al código no administrado
Aquí está mi código:
1) Cabecera (MyInterop.ManagedCppLib.h):
#pragma once
using namespace System;
namespace MyInterop { namespace ManagedCppLib {
public ref class MyManagedClass
{
public:
void DoSomething();
};
}}
2) CPP Código (MyInterop.ManagedCppLib.cpp)
#include "stdafx.h"
#include "MyInterop.ManagedCppLib.h"
#pragma unmanaged
void UnmanagedMethod(int a, int b, void (*sum)(const int))
{
int result = a + b;
sum(result);
}
#pragma managed
void MyInterop::ManagedCppLib::MyManagedClass::DoSomething()
{
System::Console::WriteLine("hello from managed C++");
UnmanagedMethod(3, 7, /* ANY IDEA??? */);
}
I intenté crear mi delegado administrado y luego traté de usar el método Marshal::GetFunctionPointerForDelegate
, pero no pude compilar.
¿Podría publicar el código, en el que utilizó GetFunctionPointerForDelegate? – Simon