Ich versuche, eine C++ erstellen Wrapper für eine C# -Klasse die folgende Anleitung verwenden: pragmateek C++ wrapper for C# classProjekt nicht bauen: „gcroot.h Dieses Dokument wurde von einem anderen Projekt geöffnet wird“
Wenn ich laufe, bauen, ich erhalten diese Fehlermeldung:
Error C1001 An internal error has occurred in the compiler. [project name] C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.12.25827\include\msclr\gcroot.h 110
Wenn ich auf den Fehler klicken funktioniert es wie folgt: VS gcroot.h
void swap(gcroot<T> & _right)
{ //VS shows error on this line
using std::swap;
swap(_handle, _right._handle);
}
Linie 110
öffnet Ich erhalte mehrere Popup fordert alle Lesung:"This document is opened by another project"
Ich bin mit VS2017, .net 4.5
Gibt es einen Trick, um das ich nicht sehen? Gibt es eine bessere oder modernere/kanonischere Möglichkeit, eine .NET-Klasse für die Verwendung in C++ einzubetten? Mein Endziel ist es, in C# zu entwickeln und eine API für den Client in C++ bereitzustellen. Mein Kunde ist zu weit in das Projekt zurückgekehrt und hat dann seinen C# -Typ verloren und möchte nun, dass ich meinen Teil des Projekts auf C++ umstelle.
Ich habe schon eine Menge Zeit auf Google verbracht.
Update: eine der folgenden Hinzufügen bewirkt, dass es um den Fehler werfen:
#include <vcclr.h>
#include <msclr\auto_gcroot.h>
Ich bin gcroot. Es tut uns leid. Ich musste. – user4581301
Das ist * auch * wahr! – fish