Possiedo un progetto Visual Studio che contiene file con codice gestito e file con codice non gestito. Il progetto ha il supporto CLR, ma quando aggiungo un file in cui non ho bisogno di .NET Ho semplicemente disattivare l'opzione/CRL con un clic destro sul file:Disattiva l'opzione clr per il file di intestazione con std :: mutex
ho aggiunto una classe che deve contenere codice non gestito e usare std :: mutex.
// Foo.h
class Foo
{
std::mutex m;
}
ho ottenuto il seguente errore dopo la compilazione:
errore C1189: #error: non è supportato quando si compila con /CLR o/CLR: puro.
Il problema è che non ho la possibilità di spegnere il CLR per i file di intestazione (h), dal momento che questa è la finestra quando right-click su un file .h:
Come posso risolvere questo problema?
La mia sfera di cristallo dice che non era una buona idea mettere questa classe in un file .h. Perché anche tu includi un file .cpp che viene compilato con/clr in effetti. Evitare di esporre interni di classe con un'interfaccia. –
@ HansPassant sì, ho il file .cpp che include Foo.h. Dove ** esaclty ** dovrei spostare tutte le classi incluse nei file cpp in cui ho disabilitato l'opzione clr? – Nick