Ich habe ein Visual Studio-Projekt, das Dateien mit verwaltetem Code und Dateien mit nicht verwaltetem Code enthält. Das Projekt hat die CLR-Unterstützung, aber wenn ich eine Datei hinzufügen, wo ich nicht brauche .NET ich einfach die/crl Option mit einem Rechtsklick auf die Datei deaktivieren:Option CLR für Header-Datei mit Std :: Mutex deaktivieren
Ich habe eine Klasse das muss nicht verwalteten Code enthalten und std :: mutex verwenden.
// Foo.h
class Foo
{
std::mutex m;
}
Ich habe den folgenden Fehler nach dem Kompilieren:
Fehler C1189: #error: nicht unterstützt wird, wenn sie mit /clr oder/clr kompilieren: rein.
Das Problem ist, dass ich die clr für Header-Dateien (.h) nicht deaktivieren die Option, da dies das Fenster ist, wenn ich mit der rechten Maustaste auf eine .h-Datei:
Wie kann ich dieses Problem beheben?
Meine Kristallkugel sagt, dass es keine gute Idee ist diese Klasse in einer .h-Datei zu setzen. Weil Sie auch eine CPP-Datei enthalten, die mit/clr in der Praxis kompiliert wird. Vermeiden Sie das Aussetzen von Klasseninterna mit einer Schnittstelle. –
@HansPassant Ja, ich habe die .cpp-Datei, die Foo.h enthält. Wo ** exaclty ** sollte ich alle in cpp-Dateien enthaltenen Klassen verschieben, in denen ich die clr-Option deaktiviert habe? – Nick