Aufrufen von verwalteten C ++ - Methoden aus nicht verwaltetem C ++

BITTE SEHEN SIE UPDATE UNTEN(BEHOBEN) Auch ich habe dies hier zu einer zweiten Frage erweitertImplementieren Sie eine C # -DLL-COM-Datei in einem nicht verwalteten C ++ - Programm

Ich habe dies bis zum Ende des Internets recherchiert, ohne ein reales, verständliches menschliches Beispiel dafür zu finden.

Ich habe eine C # -DLL, die Text verschlüsselt und entschlüsselt.

Ich möchte / habe nicht die intellektuelle Fähigkeit, dies in nicht verwaltetem C ++ - Code umzuschreiben. Deshalb habe ich stattdessen eine C ++ / CLR-Klasse erstellt, die mit der C # -Dll kommuniziert.

JETZT muss ich wissen, wie man das verwaltete C ++ von meinem nicht verwalteten Code aus aufruft.

Hier ist mein verwalteter Code und es wird überprüft, dass er funktioniert

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

Jetzt habe ich das EINMAL WIEDER recherchiert.

Ich habe all die schlechten / übermäßig komplizierten Erklärungen gesehen

Ich weiß, ich muss etwas namens COM oder Interop verwenden

Ich weiß nicht, wie das funktioniert und suche nur eine sehr einfache Erklärung.

Danke für die Hilfe.

AKTUALISIEREN

Ich habe die C # -DLL in eine COM-Datei umgewandelt

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

Jetzt muss ich nur noch wissen, wie man dies in nicht verwaltetem C ++ implementiert ... Ich habe versucht, sowohl nur die Dateien zum C ++ - Projekt als auch das gesamte cSharpRiJHarn-Projekt zu dieser Lösung hinzuzufügen. Weder Arbeit.

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

Dies ist einer der Fehler, die ich erhalte.

Fehler 6 Fehler C2653: 'cSharpRiJHarn': ist kein Klassen- oder Namespace-Name

und

Fehler 8 IntelliSense: Die Quelldatei "C: /.../.../ Documents / Visual Studio 2010 / Projects / unmannagedCPPExample / unmannagedCPPExample / Debug / cSharpRiJHarn.tlh" kann nicht geöffnet werden. C: ...... \ documents \ visual studio 2010 \ projects \ unmannagedcppexample \ unmannagedcppexample \ unmannagedcppexample.cpp

Antworten auf die Frage(2)

Ihre Antwort auf die Frage