C ++ / CLI вызывает функцию из C# Dll с функцией обратного вызова в качестве параметра - PullRequest
2 голосов
/ 22 марта 2020

Мне удается вызвать C# dll из моего кода C ++, как показано ниже,

#include "stdafx.h"
#include <string>
#include <iostream>


#using "../Release/ClassLibrary1.dll"

using namespace ClassLibrary1;
using namespace System;


int main()
{
    int sum, x, y;
    x = 100000;
    y = 22;
    Class1 ^a = gcnew Class1();
    sum = a->demoAdd(x, y);
    sum = x + y;
    printf("%d", sum);

}

int ttt(std::string &str1) {

}

И это C# Dll,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClassLibrary1
{
    public class Class1
    {
        public int demoAdd(int x, int y)
        {
            int sum;
            sum = x + y;
            return sum;
        }

        public bool RunTheMethod(Func<string, int> myMethodName)
        {
            //... do stuff
            int i = myMethodName("My String");
            //... do more stuff
            return true;
        }

    }
}

Работает demoAdd однако, как талисман, я не знаю, возможно ли вызвать RunTheMethod, для которого требуется функция в качестве параметра со стороны C ++.

Я попытался, как показано ниже, без удачи,

int main()
{
    int sum, x, y;
    x = 100000;
    y = 22;
    Class1 ^a = gcnew Class1();
    sum = a->demoAdd(x, y);
    sum = x + y;
    printf("%d", sum);


    a->RunTheMethod(&ttt);

    return 0;
}

int ttt(std::string &str1) {

}

Я новичок ie в c ++, возможно ли сделать этот вызов?

Любая помощь приветствуется!

enter image description here

...