Как вызывать управляемые методы C ++ из неуправляемого C ++

ПОЖАЛУЙСТА, СМОТРИТЕ ОБНОВЛЕНИЕ НИЖЕ(РЕШЕНО) Также я расширил это во второй вопрос здесьРеализация C # DLL COM-файла в неуправляемой программе C ++

Я исследовал это до конца Интернета, не найдя реального, понятного, человеческого примера того, как это сделать.

У меня есть C # DLL, которая шифрует и дешифрует текст.

Я не хочу / не обладаю интеллектуальной способностью переписать это в неуправляемом коде C ++. Поэтому вместо этого я создал класс C ++ / CLR, который взаимодействует с DLL C #.

СЕЙЧАС мне нужно знать, как вызвать управляемый C ++ из моего неуправляемого кода.

Вот мой управляемый код, и он проверен, что он работает

// clrTest.cpp : main project file.

#include "cSharpRiJHarn"
#include "stdafx.h"
#include <string>
#include <stdio.h>

using namespace cSharpRiJHarn;
using namespace System;


String^ Encrypt(String ^s)
{
    return  RijndaelLink::encrypt(s);   
}


String^ Decrypt(String ^s)
{
    return  RijndaelLink::decrpyt(s);   
}

int main()
{   
     //Console::WriteLine(Encrypt("It Works"));

     //Console::WriteLine(Decrypt(Encrypt("It Works")));

     //Console::ReadLine();
     return 0;
}

Теперь, когда я снова исследовал это.

Я видел все плохие / слишком сложные объяснения

Я знаю, что мне нужно использовать что-то под названием COM или Interop

Я не знаю, как это работает, и я просто ищу очень простое объяснение.

Спасибо за помощь.

ОБНОВИТЬ

Я превратил C # DLL в COM-файл

using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace cSharpRiJHarn
{
    [Guid("GuiD CODE REMOVED")]
    public interface DBCOM_Interface
    {
        [DispId(1)]
        String encrypt(string s);
        [DispId(2)]
        String decrpyt(string s);
    }

    [Guid("GuiD CODE REMOVED"),
    InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface DBCOM_Events
    {
    }

    [Guid("GuiD CODE REMOVED"),
    ClassInterface(ClassInterfaceType.None),
    ComSourceInterfaces(typeof(DBCOM_Events))]
    public class RijndaelLink : DBCOM_Interface
    {
        public String encrypt(String s)
        {
            return Rijndael.EncryptString(s); 
        }
        public String decrpyt(String s)
        {
            return Rijndael.DecryptString(s);
        }
    }
}

Теперь мне просто нужно знать, как реализовать это в неуправляемом C ++ ... Я попробовал как добавить только файлы в проект C ++, так и добавить весь проект cSharpRiJHarn в это решение. Ни одна из них не работает.

#import "cSharpRiJHarn" 
#include "stdafx.h"
#include <string>
#include <stdio.h>
#include <iostream>
//using namespace cSharpRiJHarn;


int main(){

    cSharpRiJHarn::RijndaelLink::encrypt("It works");
    char ch;
    std::cin>>ch;
    return 0;
}

Это одна из ошибок, которые я получаю.

Ошибка 6 ошибка C2653: «cSharpRiJHarn»: не является именем класса или пространства имен

а также

Ошибка 8 IntelliSense: невозможно открыть исходный файл "C: /.../.../ Documents / Visual Studio 2010 / Проекты / unmannagedCPPExample / unmannagedCPPExample / Debug / cSharpRiJHarn.tlh" c: ...... \ Documents \ visual студия 2010 \ projects \ unmannagedcppexample \ unmannagedcppexample \ unmannagedcppexample.cpp

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

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