PInvoke reverso do C ++ nativo

No momento, estou tentando chamar uma função de uma DLL C # de um aplicativo C ++ não gerenciado.

Depois de pesquisar por horas na web e SO, descobri que tenho algumas opções.

Posso usar COMDllExport, ou use reverso PInvoke com delegados. O último soou mais atraente para mim, então depois de pesquisar SO acabeiAqui.

Ele afirma que o artigo mostra como usar reverso PInvoke, mas parece que o código C # tem que primeiro importar o C ++ Dll, antes que ele possa ser usado.

Eu preciso ser capaz de usar o C ++ para chamar minhas funções C # Dll, sem executar um aplicativo C # primeiro.

Talvez inverter PInvoke não é a maneira de fazê-lo, mas eu sou bastante inexperiente quando se trata de coisas de baixo nível, então qualquer ponteiros ou dicas sobre como fazer isso seria ótimo.

O código no link é

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

questionAnswers(1)

yourAnswerToTheQuestion