Comment passer un pointeur de fonction de C++ géré (C++/CLI) à une méthode non managée? J'ai lu quelques articles, comme this one from MSDN, mais il décrit deux assemblées différentes, alors que je n'en veux qu'une.C++/passe cli (géré) délégué au code non managé
Voici mon code:
1) En-tête (MyInterop.ManagedCppLib.h):
#pragma once
using namespace System;
namespace MyInterop { namespace ManagedCppLib {
public ref class MyManagedClass
{
public:
void DoSomething();
};
}}
2) Code du RPC (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 J'ai essayé de créer mon délégué géré, puis j'ai essayé d'utiliser la méthode Marshal::GetFunctionPointerForDelegate
, mais je n'ai pas pu compiler.
Pourriez-vous s'il vous plaît poster le code, dans lequel vous avez utilisé GetFunctionPointerForDelegate? – Simon