Schalten Sie die clr-option für header-Datei mit std::mutex
Habe ich ein Visual Studio-Projekt enthält Dateien mit verwaltetem code und Dateien mit nicht verwaltetem code. Das Projekt hat die CLR-Unterstützung, aber wenn ich eine Datei hinzufügen, wo ich nicht brauchen .Ich NET einfach ausschalten /crl-option mit der rechten Maustaste auf die Datei:
Ich habe eine Klasse, die hat zu enthalten, die verwalteten code und die Verwendung von std::mutex.
//Foo.h
class Foo
{
std::mutex m;
}
Bekam ich die folgende Fehlermeldung nach dem kompilieren:
error C1189: #error : wird nicht unterstützt, wenn das kompilieren mit
/clr oder /clr:pure.
Das problem ist, dass ich nicht die option zum ausschalten der clr-header-Dateien (.h), denn dies ist das Fenster, wenn ich mit der rechten Maustaste auf eine .h-Datei:
Wie kann ich dieses problem beheben?
- Meine Kristallkugel sagt, dass es keine gute Idee war, um diese Klasse in einem .h-Datei. Weil Sie auch #inklusive es einen ein .cpp-Datei, das kompilieren mit /clr-in-Effekt. Vermeiden Sie es, Klasse Einbauten mit einer Schnittstelle.
- ja, ich habe die .cpp-Datei, enthält Foo.h. Wo genau soll ich verschieben Sie alle Klassen enthalten, die in cpp-Dateien, in denen ich deaktiviert die clr-option?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es die Möglichkeit, verwenden Sie die Problemumgehung, bekannt als die Zeiger Auf die Umsetzung (pImpl) idiom.
Folgende ist ein kurzes Beispiel: