Odwróć PInvoke z natywnego C ++

Obecnie próbuję wywołać funkcję z biblioteki DLL C # z niezarządzanej aplikacji C ++.

Po szukaniu godzin w sieci i SO znalazłem kilka opcji.

Mogę użyć COM,DllExportlub użyj odwrotnego PInvoke z delegatami. Ten ostatni brzmiał dla mnie najbardziej pociągająco, więc po przeszukaniu Skończyłemtutaj.

Stwierdza, że ​​artykuł pokazuje, jak używać odwrotnego PInvoke, ale wygląda na to, że kod C # musi najpierw zaimportować bibliotekę C ++ Dll, zanim będzie można go użyć.

Muszę być w stanie użyć C ++ do wywołania moich funkcji C # Dll, bez uruchamiania aplikacji C # w pierwszej kolejności.

Może odwrotny PInvoke nie jest sposobem na to, ale jestem dość niedoświadczony, jeśli chodzi o rzeczy niskiego poziomu, więc wszelkie wskazówki i wskazówki, jak to zrobić, byłyby świetne.

Kod w linku to

DO#

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);    
    }    
}

questionAnswers(1)

yourAnswerToTheQuestion