c ++ / cli将(托管)委托传递给非托管代码

如何将函数指针从托管C ++(C ++ / CLI)传递给非托管方法?我读了几篇文章,例如MSDN上的这篇文章,但是它描述了两种不同的程序集,而我只想要一种。


这是我的代码:


1)标头(MyInterop.ManagedCppLib.h):


#pragma once


using namespace System;


namespace MyInterop { namespace ManagedCppLib {


    public ref class MyManagedClass

    {

    public:

        void DoSomething();

    };

}}

2)CPP代码(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??? */);

}

我尝试创建托管委托,然后尝试使用Marshal::GetFunctionPointerForDelegatemethod,但无法编译。


跃然一笑
浏览 557回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP