相关疑难解决方法(0)

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();
    };
}}
Run Code Online (Sandbox Code Playgroud)

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??? */);
}
Run Code Online (Sandbox Code Playgroud)

我尝试创建我的托管委托,然后我尝试使用Marshal::GetFunctionPointerForDelegate方法,但我无法编译.

delegates interop c++-cli function-pointers

26
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++-cli ×1

delegates ×1

function-pointers ×1

interop ×1