Обратный PInvoke из родного C ++

В настоящее время я пытаюсь вызвать функцию из C # DLL из неуправляемого приложения C ++.

После поисков в Интернете и часов я обнаружил, что у меня есть несколько вариантов.

Я могу использовать COM,DllExportили используйте обратный PInvoke с делегатами. Последнее звучало наиболее привлекательно для меня, поэтому после поиска ТАК я оказалсяВот.

В нем говорится, что в статье показано, как использовать обратный PInvoke, но похоже, что код C # должен сначала импортировать C ++ Dll, прежде чем его можно будет использовать.

Мне нужно иметь возможность использовать C ++ для вызова моих функций C # Dll без предварительного запуска приложения на C #.

Может быть, обратный PInvoke не способ сделать это, но я довольно неопытен, когда дело доходит до вещей низкого уровня, так что любые указатели или советы о том, как это сделать, было бы замечательно.

Код в ссылке

C #

using System.Runtime.InteropServices;

public class foo    
{    
    public delegate void callback(string str);

    public static void callee(string str)    
    {    
        System.Console.WriteLine("Managed: " +str);    
    }

    public static int Main()    
    {    
        caller("Hello World!", 10, new callback(foo.callee));    
        return 0;    
    }

    [DllImport("nat.dll",CallingConvention=CallingConvention.StdCall)]    
    public static extern void caller(string str, int count, callback call);    
}

C ++

#include <stdio.h>    
#include <string.h>

typedef void (__stdcall *callback)(wchar_t * str);    
extern "C" __declspec(dllexport) void __stdcall caller(wchar_t * input, int count, callback call)    
{    
    for(int i = 0; i < count; i++)    
    {    
        call(input);    
    }    
}

Ответы на вопрос(1)

Ваш ответ на вопрос